我需要同时获取每个生成器的结果,但是生成器的数量可以是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/

10-10 12:41