stretching list comprehensions

Bengt Richter bokr at oz.net
Tue Aug 12 03:44:56 CEST 2003


On Tue, 12 Aug 2003 09:26:40 +1000, Simon Burton <simonb at webone.com.au> 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?
>
Left to right seems to work, but I'm not sure what ordering you require.
To see the x's and y's separately, you can temporarily do tuples instead of adding:

 >>> [(x,y) for y in range(10) for x in range(y) ]
 [(0, 1), (0, 2), (1, 2), (0, 3), (1, 3), (2, 3), (0, 4), (1, 4), (2, 4), (3, 4), (0, 5), (1, 5),
  (2, 5), (3, 5), (4, 5), (0, 6), (1, 6), (2, 6), (3, 6), (4, 6), (5, 6), (0, 7), (1, 7), (2, 7),
  (3, 7), (4, 7), (5, 7), (6, 7), (0, 8), (1, 8), (2, 8), (3, 8), (4, 8), (5, 8), (6, 8), (7, 8),
  (0, 9), (1, 9), (2, 9), (3, 9), (4, 9), (5, 9), (6, 9), (7, 9), (8, 9)]

Regards,
Bengt Richter




More information about the Python-list mailing list