Обнаружение самого дешевого способа создания независимых итераторов
Предположим, я пишу функцию, принимающую итерацию, и моя функция хочет быть независимой от того, является ли эта итерация на самом деле итератором или нет.
(Это обычная ситуация, верно? Я думаю, что в основном все функции itertools написаны таким образом. Возьмите итерируемый объект, верните итератор.)
Если я позвоню, например,
itertools.tee(•, 2)
на объекте, и это еще не итератор, что, по-видимому, означает, что было бы дешевле просто вызвать
iter
дважды, чтобы получить два моих независимых итератора. Достаточно ли умны функции itertools, чтобы знать это, и если нет, то как лучше всего избежать ненужных затрат таким образом?