我需要同时获取每个生成器的结果,但是生成器的数量可以是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
最佳答案
您想要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]
关于python - 一起循环多个发电机,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54673111/