Функция Python zip: объединение итераций и распаковка

Функция zipв Python — это встроенная функция, которая позволяет объединять несколько итераций (например, списки, кортежи или строки) в одну итерацию путем объединения в пары соответствующих элементов из каждого входного объекта.. Результирующая итерация содержит кортежи, где i-й кортеж содержит i-й элемент из каждой входной итерации.

Вот пример использования функции zip:

numbers = [1, 2, 3]
letters = ['a', 'b', 'c']
zipped = zip(numbers, letters)
for pair in zipped:
    print(pair)

Выход:

(1, 'a')
(2, 'b')
(3, 'c')

В дополнение к базовому использованию, показанному выше, вот еще несколько методов и советов, связанных с функцией zipв Python:

  1. Распаковка. Вы можете разархивировать заархивированную итерацию, используя функцию zipвместе с оператором *. Например:
pairs = [(1, 'a'), (2, 'b'), (3, 'c')]
numbers, letters = zip(*pairs)
print(numbers)  # (1, 2, 3)
print(letters)  # ('a', 'b', 'c')
  1. Обработка неравной длины: если входные итерации имеют разную длину, zipостанавливается, как только самая короткая итерация будет исчерпана. Все оставшиеся элементы в более длинных итерациях игнорируются.

  2. Объединение нескольких итераций: zipможет принимать несколько итераций в качестве аргументов. Например:

numbers = [1, 2, 3]
letters = ['a', 'b', 'c']
symbols = ['!', '@', '#']
combined = zip(numbers, letters, symbols)
for triplet in combined:
    print(triplet)

Выход:

(1, 'a', '!')
(2, 'b', '@')
(3, 'c', '#')