У меня есть небольшой фрагмент кода, который не работает необъяснимым образом.
Цель состоит в том, чтобы сгенерировать все комбинации из двух или более последовательностей.
Он работает при вызове со списками, но не при вызове с генераторами.
def comb(seqs):
if seqs:
for item in seqs[0]:
for rest in comb(seqs[1:]):
yield [item] + rest
else:
yield []
if __name__=="__main__":
x=[1,2]
y=[3,4]
print list(comb([x,y])) # prints [[1, 3], [1, 4], [2, 3], [2, 4]]
def gen1(): yield 1; yield 2
def gen2(): yield 3; yield 4
x=gen1()
y=gen2()
print list(comb([x,y])) # prints [[1, 3], [1, 4] WHY ????