Iain King wrote:
>>>> [x for x in y for y in beta]
> ['C', 'C', 'C']
>>>> [y for y in beta]
> [['one', 'two', 'three'], ['one', 'two', 'three'], ['one', 'two',
> 'three']]
>>>> [x for x in y for y in beta]
> ['one', 'one', 'one', 'two', 'two', 'two', 'three', 'three', 'three']
>
> Shoudn't both lines '[x for x in y for y in beta]' produce the same
> list?
[x for x in y for y in beta] is a shorthand for:
tmp = []
for x in y:
for y in beta:
tmp.append(x)
So x iterates over whatever y is before the loop starts, and y iterates
over beta (but that doesn't affect what x is iterating over).
The important thing is to remember that the order of 'for' and 'if'
statements is the same as though you had written the for loop out in full.
--
http://mail.python.org/mailman/listinfo/python-list