我有一个小片段在某种不可思议的方式下无法正常工作。
其目的是生成两个或更多序列的所有组合。
当使用列表调用时,它可以工作,但是当使用生成器调用时却不能。
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 ????
itertools.product
? - Björn Pollex