stretching list comprehensions
imbosol at aerojockey.com
Tue Aug 12 02:04:04 CEST 2003
Simon Burton wrote:
> I was quite delighted when i found this:
>>>> nums = [ x+y for x in range(10) for y in range(10) ]
> Great! No more list of list joining shenanigans...
> Shortly thereafter, i tried this:
>>>> del y
>>>> nums = [ x+y for x in range(y) for y in range(10) ]
> Traceback (most recent call last):
> File "<stdin>", line 1, in ?
> NameError: name 'y' is not defined
> Well.. Is there an inherent reason why this could/should not be made to work?
Yes: you're doing it backwards. Try it this way:
nums = [ x+y for x in range(10) for y in range(x) ]
To understand why, think about the equivalent for loop:
nums = 
for x in range(10):
for y in range(x):
If you do it the other way, you can see that y is undefined before
"You don't run Microsoft Windows. Microsoft Windows runs you."
More information about the Python-list