Глава 11 · Очень много информации!

zip() и распаковка

Один инструмент, который часто идёт рука об руку с кортежами и распаковкой: соединить два списка поэлементно.

zip() — соединяем два списка попарно

zip_primer.py
names = ["Anna", "Bob"]
scores = [95, 82]

for name, score in zip(names, scores):
    print(name, "—", score)
names[0],scores[0]Anna, 95names[1],scores[1]Bob, 82
zip() берёт по одному элементу из каждого списка на одинаковой позиции
zip() останавливается на самом коротком
Если списки разной длины, zip() по умолчанию останавливается, как только заканчивается более короткий — «лишние» элементы длинного списка просто игнорируются, без ошибки.

zip() + dict — собрать словарь из двух списков

zip_v_dict.py
names = ["Anna", "Bob", "Maria"]
scores = [95, 82, 91]

result = dict(zip(names, scores))
print(result)   # {'Anna': 95, 'Bob': 82, 'Maria': 91}

Распаковка в циклах

Мы уже пользовались этим для словарей (§11.17) — тот же принцип, что и распаковка кортежа из §11.13, только применённая внутри цикла:

raspakovka_v_cikle.py
pary = [("Anna", 95), ("Bob", 82)]
for name, score in pary:
    print(f"{name}: {score}")
Практика: zip() и распаковка в циклах
Интерактивный ноутбук прямо в браузере — Python 3.14 через Pyodide, без установки
Открыть практику →