Цикл по нескольким генераторам вместе - PullRequest
0 голосов
/ 13 февраля 2019

Мне нужно получить результат каждого генератора одновременно, но число генераторов может быть любым от 1 до 10.

Мой вопрос, вероятно, связан с этим вопросом: Цикл над двумягенератор вместе

Можно ли обобщить это для произвольного числа генераторов, которые есть в списке?Что-то вроде (не работает)

generators = [gen1, gen2, gen3, ....]
for *data in *generators:
    #do something, e.g. average data along axis and write out

1 Ответ

0 голосов
/ 13 февраля 2019

IIUC вы хотите zip для этого.Вот простой пример с суммой:

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

# [9, 12]

или itertools.zip_longest, как подсказывает @alexis, если генераторы могут отличаться по длине, и вы хотите выполнять итерации досамый длинный из них потребляется:

generators = [(1,2), (3,4), (5,6,0)]
[sum(i) for i in zip_longest(*generators, fillvalue=0)]
# [9, 12, 0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...