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

Reply via email to