Создаёт несколько итераторов для одного итерируемого объекта.
itertools.tee(iterable, n=2)
-> tuple[iterator, ...]]
iterable -- Объект, поддерживающий итерирование, для которого создаются итераторы.

n=2 -- Количество итераторов, которое требуется создать.

Возвращает кортеж, содержащий указанное количество итераторов.

Внимание
После выполнения данной функции, следует избегать использования переданного в неё объекта. Иначе можно случайно передвинуть указатель на текущий элемент объекта, а созданные итераторы об этом ничего не узнают.

На заметку
Функция может потребовать значительных затрат на хранение временной информации. Поэтому, если один из итераторов обойдёт все или большую часть данных, до того как начнётся работа с другим, более эффективным будет приведение к списку, вместо вызова данной функции.

    from itertools import tee

iter1, iter2, iter3 = tee([1, 2, 3], 3)

list(iter1) # [1, 2, 3]
list(iter2) # [1, 2, 3]
list(iter3) # [1, 2, 3]

Внимание
Созданные итераторы небезопасны для использования в нитях. Даже если переданный в функцию объект обучен работе с нитями, при одновременном использовании созданных итераторов может возникнуть RuntimeError.
Синонимы поиска: itertools.tee, itertools, tee
На заметку
У нас есть представительство во ВКонтакте. Ссылка в самом низу страницы.