logo

zip(*iterables, strict=False)

Возвращает итератор по кортежам, где i-тый кортеж содержит i-тый элемент каждой из указанных последовательностей.

Параметры

  • iterables: Итерируемые объекты, элементы которых следует упаковать в кортежи. Если передана одна последовательность, вернётся итератор по кортежам, состоящим из единственного элемента. Если последовательности не переданы, возвращается пустой итератор. Итератор останавливается, когда исчерпана кратчайшая из последовательностей.

Возвращаемое значение

Функция zip() возвращает итератор кортежей на основе итерируемых объектов.

  • Если мы не передаем никаких параметров, zip() возвращает пустой итератор
  • Если передается один итерируемый объект, zip() возвращает итератор кортежей, каждый из которых имеет только один элемент.
  • Если передано несколько итераций, zip() возвращает итератор кортежей, причем каждый кортеж содержит элементы из всех итераций. Предположим, две итерации передаются в zip(); одна итерация, содержащая три, а другая, содержащая пять элементов. Тогда возвращаемый итератор будет содержать три кортежа. Это потому, что итератор останавливается, когда самая короткая итерация исчерпана.

Примеры

list(zip([1, 2, 4], [4, 5], [5, 7]))
# [(1, 4, 5), (2, 5, 7)]

Гарантируется вычисление слева направо, что делает возможным следующую идиому кластеризации данных по группам n-длины — zip(*iter(s) * n):

seq = [1,2,3,4,5,6]
list(zip(*[iter(seq)] * 2)) # [(1, 2), (3, 4), (5, 6)]
list(zip(*[iter(seq)] * 3)) # [(1, 2, 3), (4, 5, 6)]

В сочетании с оператором * функция может быть использована для распаковки списка:

first, second = zip(*[(1, 4), (2, 5), (3, 6)])
# (1, 2, 3), (4, 5, 6)

Python с нуля. Освойте с Виртуальным ИИ-помощником!

  • Теоретические уроки и практические задачи
  • Пишите и проверяйте код прямо в браузере
  • Виртуальный ИИ-помощник поможет в любое время дня и ночи
  • Сообщество учеников для взаимопомощи и обмена опытом
  • 200 000+ зарегистрированных участников. Присоединяйтесь!