Предположим, у нас есть итератор (бесконечный), который возвращает списки (или конечные итераторы), например, возвращаемый
infinite = itertools.cycle([[1,2,3]])
Какая хорошая идиома Python для получения итератора (очевидно, бесконечного), который будет возвращать каждый из элементов из первого итератора, затем каждый из второго и т. д. В приведенном выше примере он вернет 1,2,3,1,2,3,.... Итератор бесконечен, поэтому itertools.chain(*infinite) работать не будет.






Используйте генератор:
(item for it in infinite for item in it)
Конструкция * распаковывается в кортеж для передачи аргументов, поэтому использовать ее невозможно.
Начиная с Python 2.6, вы можете использовать itertools.chain.from_iterable:
itertools.chain.from_iterable(iterables)
Вы также можете сделать это с помощью вложенного генератора:
def flatten(iterables):
return (elem for iterable in iterables for elem in iterable)
@diffracteD - присоединиться к бесконечному количеству предметов? Нет, не совсем
Могу ли я присоединяться к спискам с ';' ?