>>> import itertools as it
>>> List(it.accumulate([11, 3, 9, 7, 5], func=min))
[11, 3, 3, 3, 3]
>>> Llist(it.chain([1, 2, 3], [4, 5], [6]))
[1, 2, 3, 4, 5, 6]
>>> List(it.combinations([1, 2, 3], 2))
[(1,2),(1, 3), (2, 3)]
Сегодня мы рассмотрим несколько функций из довольно полезного модуля, позволяющих эффективно работать с итерируемыми объектами. Начнём с очень простой функции – chain. Она позволяет "склеивать" несколько итерируемых элементов в один.
Далее, accumulate. Эта функция немного похожа на reduce, но вместо того, чтобы давать одно окончательное значение, она последовательно применяет функцию, заданную вторым аргументом (в данном случае min), к каждому последующему элементу по порядку: min(11), min(11, 3), min(11, 3, 9) и так далее.
А для того, чтобы создавать комбинации из элементов выбранного итерируемого объекта, вам понадобится функция combinations. Вторым аргументом можно задать длину этой самой комбинации.