我需要同时获取每个生成器的结果,但是生成器的数量可以是1到10之间的任何值。
我的问题可能与此问题有关:Loop over two generator together
是否可以针对列表中任意数量的生成器将其概括化?诸如此类的东西(不起作用)
generators = [gen1, gen2, gen3, ....]
for *data in *generators:
#do something, e.g. average data along axis and write out
答案 0 :(得分:2)
您想要zip
的IIUC。这是一个求和的简单示例:
generators = [(1,2), (3,4), (5,6)]
[sum(i) for i in zip(*generators)]
# [9, 12]
或者@alexis建议的itertools.zip_longest
,如果生成器的长度可能不同,并且您想要迭代直到消耗了最长的生成器:
generators = [(1,2), (3,4), (5,6,0)]
[sum(i) for i in zip_longest(*generators, fillvalue=0)]
# [9, 12, 0]