Упаковка по более длинной последовательности

Если последовательности имеют неодинаковую длину, zip() ограничивается самой короткой:

>>> list(zip(range(0, 10), range(0, 5)))
[(0, 0), (1, 1), (2, 2), (3, 3), (4, 4)]

Но такое сокращение может быть неудобно из-за потери информации. Чтобы сохранить обе последовательности, используйте itertools.zip_longest():

for (i, j) in itertools.zip_longest(range(0, 10), range(0, 5)):
    print(i, j)
0 0
1 1
2 2
3 3
4 4
5 None
6 None
7 None
8 None
9 None

Вместо None функция может подставлять значение, переданное аргументу fillvalue.