Python Glossary English

все Python 3Списки (list)понятие

zip() со списками

итерация

zip() объединяет элементы нескольких итерируемых объектов в кортежи. Останавливается на самом коротком.

Синтаксис

zip(lst1, lst2, ...)  |  zip(*matrix)

Обрезка по самой короткой последовательности происходит молча — если длины обязаны совпадать, с Python 3.10 передавайте strict=True, тогда расхождение даст ValueError вместо тихо потерянных элементов. Результат одноразовый и ленивый: после одного list(zip(...)) или одного цикла итератор пуст, повторно пройти по нему не выйдет. Если нужно дополнить до самой длинной, а не обрезать — itertools.zip_longest().

Примеры

a = [1, 2, 3]
b = ['a', 'b', 'c']
print(list(zip(a, b)))  # → [(1, 'a'), (2, 'b'), (3, 'c')]
for x, y in zip(a, b):
    print(x, y)  # → 1 a / 2 b / 3 c
print(list(zip([1, 2, 3], [4, 5])))  # → [(1, 4), (2, 5)] — по короткому
print(dict(zip(['a', 'b', 'c'], [1, 2, 3])))  # → {'a': 1, 'b': 2, 'c': 3}
# Транспонирование: zip(*matrix)
matrix = [[1, 2, 3], [4, 5, 6]]
print(list(zip(*matrix)))  # → [(1, 4), (2, 5), (3, 6)]

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности