Вложенный цикл Python с генераторами не работает (в некоторых случаях )?

Кто-нибудь, пожалуйста, объясните поведение вложенного цикла с использованием генераторов? Вот пример.

a = (x for x in range(3))
b = (x for x in range(2))
for i in a:
    for j in b:
        print (i,j)

Внешний цикл по какой-то причине не оценивается после первой итерации. В результате

(0, 0)
(0, 1)

С другой стороны, если генераторы непосредственно вставляются в циклы, это делает то, что я ожидаю.

for i in (x for x in range(3)):
    for j in (x for x in range(2)):
        print (i,j)

давая все 3x2 пары.

(0, 0)
(0, 1)
(1, 0)
(1, 1)
(2, 0)
(2, 1)
9
задан phantomile 19 July 2012 в 22:30
поделиться