zip()

Функция zip() объединяет несколько итерируемых объектов в один итератор кортежей: i-й кортеж содержит i-е элементы каждого из аргументов. По умолчанию обход завершается, когда заканчивается самый короткий аргумент; параметр strict=True (с Python 3.10) требует равной длины.

Сигнатура

zip(*iterables, strict=False)

Параметры:

  • *iterables — любое количество итерируемых объектов.

  • strict — если True, разная длина приводит к ValueError.

Возвращает: итератор кортежей.

Примеры

Параллельный обход двух списков:

names = ["Айгуль", "Бахыт", "Серик"]
scores = [92, 87, 75]
for n, s in zip(names, scores):
    print(n, s)
Айгуль 92
Бахыт 87
Серик 75

Создание словаря из двух списков:

keys = ["host", "port", "user"]
vals = ["localhost", 8080, "admin"]
cfg = dict(zip(keys, vals))
print(cfg)
{'host': 'localhost', 'port': 8080, 'user': 'admin'}

Транспонирование «матрицы» через zip(*m):

matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
]
for row in zip(*matrix):
    print(row)
(1, 4, 7)
(2, 5, 8)
(3, 6, 9)

Объединение более двух последовательностей:

ids = [1, 2, 3]
names = ["one", "two", "three"]
colors = ["red", "green", "blue"]
for row in zip(ids, names, colors):
    print(row)
(1, 'one', 'red')
(2, 'two', 'green')
(3, 'three', 'blue')

Строгий режим strict=True:

try:
    list(zip([1, 2, 3], ["a", "b"], strict=True))
except ValueError as e:
    print("Ошибка:", e)
Ошибка: zip() argument 2 is shorter than argument 1

См. также

Примечание

Описание основано на официальной документации Python (docs.python.org), распространяемой под лицензией PSF License v2. © Python Software Foundation.