Функция zip () принимает итерации (может быть ноль или больше), объединяет их в кортеж и возвращает его.
Синтаксис zip()
функции:
zip (* итерации)
zip () Параметры
Параметр | Описание |
---|---|
iterables | могут быть встроенными итерациями (например, список, строка, dict) или определяемыми пользователем итерациями |
Рекомендуемая литература: Итераторы Python, __iter__ и __next__
Возвращаемое значение из zip ()
zip()
Функция возвращает итератор кортежей на основе итерации объектов.
- Если мы не передаем ни одного параметра,
zip()
возвращает пустой итератор - Если передана одна итерация,
zip()
возвращает итератор кортежей, каждый из которых имеет только один элемент. - Если передано несколько итераций,
zip()
возвращает итератор кортежей, в каждом кортеже есть элементы из всех итераций.
Предположим, переданы два итератораzip()
; одна итерация содержит три, а другая - пять элементов. Тогда возвращаемый итератор будет содержать три кортежа. Это потому, что итератор останавливается, когда исчерпывается самая короткая итерация.
Пример 1: Python zip ()
number_list = (1, 2, 3) str_list = ('one', 'two', 'three') # No iterables are passed result = zip() # Converting iterator to list result_list = list(result) print(result_list) # Two iterables are passed result = zip(number_list, str_list) # Converting iterator to set result_set = set(result) print(result_set)
Вывод
() ((2, 'два'), (3, 'три'), (1, 'один'))
Пример 2: Различное количество повторяемых элементов
numbersList = (1, 2, 3) str_list = ('one', 'two') numbers_tuple = ('ONE', 'TWO', 'THREE', 'FOUR') # Notice, the size of numbersList and numbers_tuple is different result = zip(numbersList, numbers_tuple) # Converting to set result_set = set(result) print(result_set) result = zip(numbersList, str_list, numbers_tuple) # Converting to set result_set = set(result) print(result_set)
Вывод
((2, 'ДВА'), (3, 'ТРИ'), (1, 'ОДИН')) ((2, 'два', 'ДВА'), (1, 'один', 'ОДИН'))
Оператор * может использоваться вместе с zip()
для распаковки списка.
zip (* zippedList)
Пример 3: Распаковка значения с помощью zip ()
coordinate = ('x', 'y', 'z') value = (3, 4, 5) result = zip(coordinate, value) result_list = list(result) print(result_list) c, v = zip(*result_list) print('c =', c) print('v =', v)
Вывод
(('x', 3), ('y', 4), ('z', 5)) c = ('x', 'y', 'z') v = (3, 4, 5)