在多个发电机上循环

2024-09-28 19:01:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要得到的结果,每个发电机在同一时间,但发电机的数量可以从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

Tags: inloop列表fordata数量generator发电机
1条回答
网友
1楼 · 发布于 2024-09-28 19:01:36

你想要zip来做这个。下面是一个简单的例子:

generators = [(1,2), (3,4), (5,6)]
[sum(i) for i in zip(*generators)]

# [9, 12]

或者^{}正如@alexis所建议的,如果生成器的长度可能不同,并且您希望迭代直到消耗最长的生成器:

generators = [(1,2), (3,4), (5,6,0)]
[sum(i) for i in zip_longest(*generators, fillvalue=0)]
# [9, 12, 0]

相关问题 更多 >