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.