的順序我有發電機的序列:(gen_0,gen_1,... gen_n)遍歷發電機
這些發電機將懶洋洋地創造自己的價值,但是是有限的,將有可能不同的長度。
我需要能夠構建另一個發生器產生,以便每個發生器的第一元件,接着是第二等等,從發電機跳過值已用盡。
我覺得這個問題是類似於拍攝的元組
((1, 4, 7, 10, 13, 16), (2, 5, 8, 11, 14), (3, 6, 9, 12, 15, 17, 18))
和穿越它,這樣它會從1到18的順序產生的數字。 (1,4,7,10,13,16),genB yielding(2,5,8,11)中我正在使用(genA,genB,genC)解決這個簡單的例子,14)和產生GENC(3,6,9,12,15,17,18)。
要解決元組元組的簡單問題,如果元組的元素長度相同,則答案相當簡單。如果變量「A」所指的元組,你可以使用
[i for t in zip(*a) for i in t]
不幸的是,項目不一定是相同的長度和拉鍊招似乎並不爲發電機工作反正。
到目前爲止,我的代碼是可怕的醜陋,我沒有找到任何接近一個乾淨的解決方案。幫幫我?
'itertools.izip_longest';你可以通過一個標記來填充耗盡的發電機。如果你想,你可以過濾結果中的哨兵。 – katrielalex