Clever hack or code abomination?

Steven D'Aprano steve+comp.lang.python at pearwood.info
Wed Nov 30 22:38:13 EST 2011


On Wed, 30 Nov 2011 22:15:27 -0500, Roy Smith wrote:

> I need to try a bunch of names in sequence until I find one that works
> (definition of "works" is unimportant).  The algorithm is:
> 
> 1) Given a base name, "foo", first see if just plain "foo" works.
> 
> 2) If not, try "foo-1", "foo-2", and so on
> 
> 3) If you reach "foo-20", give up.
> 
> What would you say if you saw this:
> 
> for suffix in [''] + [str(i) for i in xrange(-1, -20, -1)]:
> 
> It generates the right sequence of strings.  But, if you came upon that
> code, would it make sense to you, or would you spend half the afternoon
> trying to figure out what it did and the other half of the afternoon
> ranting about the deranged lunatic who wrote it?

Nah, it's fine. Not exactly the clearest piece of code in the world, but 
hardly worth a rant.

I'd be more likely to write that as:

for suffix in [''] + ["-%d" % i for i in range(1, 21)]:

or if I needed to do it more than once, as a generator:

def suffixes(max=20):
    yield ""
    for i in range(1, max+1):
        yield "-%d" % i



-- 
Steven



More information about the Python-list mailing list