← Все вопросы

Как пройти по двум спискам параллельно, если они разной длины?

Задан 11 месяцев назад561 просмотров2 ответа
14

zip() знаю, но он обрезает по короткому списку. А мне нужно пройтись до конца длинного, чтобы недостающие значения заполнялись чем-то по умолчанию. Как?

2 ответа

19

Есть itertools.zip_longest — он идёт до конца самого длинного, а недостающее заполняет fillvalue:

from itertools import zip_longest

a = [1, 2, 3, 4]
b = ['x', 'y']

for num, letter in zip_longest(a, b, fillvalue='-'):
    print(num, letter)
# 1 x
# 2 y
# 3 -
# 4 -

Обычный zip остановился бы после двух пар.

Андрей Соколов то что нужно, про zip_longest даже не знал · 10 месяцев назад
7

itertools.zip_longest(a, b, fillvalue=0).

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект