[Tutor] Amazed

Bill Mill bill.mill at gmail.com
Fri Nov 12 06:40:16 CET 2004


Jacob,

I think it's a readability problem - it's too easy to abuse list
comprehensions to turn a 2 or 3 line for loop into a difficult to
understand one-liner. Today I found myself doing:

[myset.add(x) for x in thingToIterate where x]

instead of:

for x in thingToIterate:
    if x:
        myset.add(x)

which is much more readable, and doesn't eat the memory of creating an
unnecessary list full of 'None'. I immediately fixed my mistake, but
it made me realize how addictive list comprehensions are; they're like
Python crack.

Peace
Bill Mill
bill.mill at gmail.com

On Thu, 11 Nov 2004 22:27:18 -0500, Jacob S. <keridee at jayco.net> wrote:
> Wow!
> 
>     I'm amazed that several people are having trouble with list
> comprehensions. I must think in that style or something. I've come up with
> odd uses for them. This one threw me for a while...
> 
> newlist = []
> powers = []
> a = 'x**2+sin(x)+2*x'
> a = a.split("+")
> powers = [newlist.append(x) for x in a if x.count('**') >= 1]
> print powers
> 
> #Code yields
> 
> [None]
> 
>     Since this is embeded deep in sloppy code, it took me a bit to realize
> that I was really wanting newlist.
> So...
> 
> >>> print newlist
> ['x**2']
> 
> Just thought I'd share an odd usage of list comprehensions with you all.
> Jacob Schmidt
> 
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
>


More information about the Tutor mailing list