Когда начинаешь писать циклы, легко собрать промежуточный список там, где он не нужен. Модуль itertools из стандартной библиотеки Python помогает обходиться без этих лишних коллекций: элементы создаются по запросу, не накапливаясь в памяти. Это особенно удобно для больших файлов и последовательностей, которые могут быть бесконечными.
В нём три группы инструментов: бесконечные итераторы вроде
count, конечные вроде chain и islice, и комбинаторные, которые перебирают варианты. Например, islice(count(1), 5) выдаст первые пять чисел, не собирая список.В статье разобрали, где itertools помогает, а где лучше обойтись без него.
