Функция zip() в Python programming -это встроенная стандартная функция, которая принимает несколько итераций или контейнеров в качестве параметров. Итерируемый в Python объект-это объект, который может быть повторен или пройден как коллекция.
Функция zip() используется для сопоставления одних и тех же индексов более чем одной итерации. Сопоставление этих индексов приведет к созданию объекта zip.
Как работает функция zip?
Функция zip связывает вместе первые элементы каждого итератора, затем связывает вместе вторые элементы и так далее.
Если итеративные объекты в функции zip имеют разную длину, то наименьшая итерационная длина определяет длину сгенерированного вывода.
Синтаксис:
zip(iterable0, iterable1, interable2, …)
Итерируемыми объектами могут быть списки Python , словарь, строки или любой итерируемый объект.
В приведенном выше синтаксисе iterable 0, iterable1 и т. Д.-Это объекты итератора, которые нам нужно объединить с помощью функции zip.
Пример:
Рассмотрим следующий фрагмент кода, в котором у нас есть три итератора, и функция zip объединяет их вместе.
x = ("Joey", "Monica", "Ross") y = ("Chandler", "Pheobe") z = ("David", "Rachel", "Courtney")
Выход:
(('Joey', 'Chandler', 'David'), ('Monica', 'Pheobe', 'Rachel'))
В приведенном выше примере мы определили три итератора разной длины. Первые элементы всех из них соединены вместе, аналогично, вторые элементы всех из них соединены вместе.
Но в итераторе y нет третьего элемента , поэтому третьи элементы оставшихся итераторов не включаются в выходной объект.
Вот почему мы ранее говорили, что длина вывода определяется длиной наименьшего итератора, которая в данном случае равна 2.
Функция tuple() преобразует объект zip в кортеж.
Если функции не передаются никакие параметры, будет сгенерирована пустая итерация. Например, результатом печати(кортеж(zip())) будет ():
Преобразование двух списков в словарь
Чтобы преобразовать два списка в словарь с помощью функции zip, вы присоединитесь к спискам с помощью функции zip, как это сделали мы, а затем сможете преобразовать их в словарь.
Предположим, у нас есть два следующих списка:
coin = ('Bitcoin', 'Ether', 'Ripple', 'Litecoin') code = ('BTC', 'ETH', 'XRP', 'LTC')
Поэтому мы заархивируем список, а затем с помощью функции dict() преобразуем его в словарь:
dict(zip(coin, code))
Функция Zip в трех/нескольких списках
Вы можете передать несколько итераций в функцию zip одного и того же или разных типов. В следующем примере мы определили три списка (все они имеют одинаковую длину), но тип данных элементов в каждом списке отличается.
Пример:
list_a = ['Bitcoin', 'Ethereum', 'Ripple', 'Litecoin', 'Bitcoin-cash'] list_b = ['BTC', 'ETH', 'XRP', 'LTC', 'BCH'] list_c = ['11605', '271', '0.335', '102', '347'] result = zip(list_a, list_b, list_c) print(tuple(result))
Выход:
(('Bitcoin', 'BTC', '11605'), ('Ethereum', 'ETH', '271'), ('Ripple', 'XRP', '0.335'), ('Litecoin', 'LTC', '102'), ('Bitcoin-cash', 'BCH', '347'))