все 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Сообщить о неточности