Перейти к другим генераторам, когда один из генераторов исчерпан в списке генераторов?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Перейти к другим генераторам, когда один из генераторов исчерпан в списке генераторов?

Сообщение Anonymous »

У меня есть список генераторов в функции alter_all(*args), которая попеременно работает с каждым генератором в списке, чтобы распечатать их первый элемент, второй элемент,... и т. д., пока все генераторы не будут исчерпаны.
Мой код работает до тех пор, пока генератор не будет исчерпан, и как только произойдет StopIteration, он перестанет печатать, тогда как я хочу, чтобы он продолжил работу с остальными генераторами и игнорировал исчерпанный:

Код: Выделить всё

def alternate_all(*args):
iter_list = []
for iterable in args:
iter_list.append(iter(iterable))
try:
while True:
for iterable in iter_list:
val = next(iter_list[0])
iter_list.append(iter_list.pop(0))
yield val
except StopIteration:
pass

if __name__ == '__main__':
for i in alternate_all('abcde','fg','hijk'):
print(i,end='')
Мой результат:

Код: Выделить всё

afhbgic
Когда это должно быть:

Код: Выделить всё

afhbgicjdke
Как я могу заставить это игнорировать исчерпанный генератор? Я бы предпочел не использовать itertools и сохранить ту же структуру.

Подробнее здесь: https://stackoverflow.com/questions/697 ... list-of-ge
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»