English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной учебник Python

Управление потоком Python

Функции в Python

Типы данных в Python

Операции с файлами Python

Объекты и классы Python

Даты и время Python

Высокий уровень знаний Python

Python справочник

Метод использования zip() в Python и примеры

Внутренние функции Python

Функция zip() принимает итеративные объекты (может быть ноль или больше), агрегирует их в кортеж и возвращает.

Синтаксис функции zip():

zip(*iterables)

Параметры zip()

ПараметрыОписание
итеративные объектыЭто могут быть内置ые итеративные элементы (например, список, строка, словарь) или пользовательские итеративные элементы

Рекомендуется к прочтению: Python итераторы, __iter__ и __next__

Возвратное значение zip()

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

  • Если не передается никаких параметров, то zip() возвращает пустой итератор

  • Если передается один итеративный объект, то zip() возвращает итератор кортежей, в каждом из которых只有一个 элемент.

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

Пример 1: Python zip()

number_list = [1, 2, 3]
str_list = ['one', 'two', 'three']
# Нет параметров итеративных объектов
result = zip()
# Преобразование итераторов в список
result_list = list(result)
print(result_list)
# Два итеративных объекта
result = zip(number_list, str_list)
# Преобразование итератора в множество set
result_set = set(result)
print(result_set)

Результат вывода

[]
{(2, 'two'), (3, 'three'), (1, 'one')}

Пример 2: Разные数量的 итерируемых элементов

numbersList = [1, 2, 3]
str_list = ['one', 'two']
numbers_tuple = ('ONE', 'TWO', 'THREE', 'FOUR')
# Обратите внимание, что numbersList и numbers_tuple имеют разный размер
result = zip(numbersList, numbers_tuple)
# Преобразование в множество set
result_set = set(result)
print(result_set)
result = zip(numbersList, str_list, numbers_tuple)
# Преобразование в множество set
result_set = set(result)
print(result_set)

Результат вывода

{(2, 'TWO'), (3, 'THREE'), (1, 'ONE')}
{(2, 'two', 'TWO'), (1, 'one', 'ONE')}

Оператор * может использоваться вместе с 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)

Внутренние функции Python