Код вычисляет декартово произведение (itertools.product
), а не zip
, как вы предложили.
Например, если входные данные [1,2,3]
и [4,5]
, результат будет:
(1,4)
(1,5)
(2,4)
(2,5)
(3,4)
(3,5)
Для сравнения, результат zip([1,2,3], [4,5])
:
(1,4)
(2,5)
Как видите, zip (или itertools.izip ) отбрасывает дополнительные элементы в более длинном аргументе.
Его вариант itertools.izip_longest заменяет эти отсутствующие элементы произвольным значением. Например, iterttools.izip_longest([1,2,3], [4,5], 99)
возвращает:
(1,4)
(2,5)
(3,99)