Как использовать функцию Zip в Python

How Use Zip Function Python



В этой статье будет рассказано о функции zip, доступной в стандартной библиотеке модулей Python. Этот метод позволяет комбинировать и объединять элементы нескольких повторяемых объектов. Затем вы можете выполнить дальнейшую логику на этих парах. Во многих случаях использование функции zip намного эффективнее и чище, чем использование нескольких вложенных циклов for.

О функции Zip

Как указывалось ранее, функция zip используется для создания пар из элементов нескольких повторяемых объектов. Рассмотрим приведенный ниже пример, чтобы понять основной синтаксис и использование функции zip:







list1знак равно ['к', 'b', 'c']
list2знак равно ['яблоко', 'мяч', 'Кот']
застегнутыйзнак равно застегивать(list1,list2)
Распечатать (список(застегнутый))

Первые два оператора в приведенном выше примере кода определяют два списка, содержащие некоторые элементы. Затем используется функция zip, передавая в качестве аргументов переменные list1 и list2. Это основной синтаксис функции zip. Вам просто нужно передать списки или другие допустимые упорядоченные итерации в качестве аргументов, элементы которых вы хотите объединить. Наконец, оператор печати используется для получения вывода заархивированной переменной. После выполнения примера кода, упомянутого выше, вы должны получить следующий результат:



[('a', 'яблоко'), ('b', 'ball'), ('c', 'cat')]

Обратите внимание, что функция zip возвращает объект типа zip, а не список. Вы должны преобразовать его в итеративный тип, как показано в инструкции печати выше.



Проще говоря, функция zip выбирает элементы одного индекса из двух списков и объединяет их как пару в кортеж. Таким образом, 0-й элемент из list1 объединяется с 0-м элементом list2, 1-й элемент из list1 объединяется с 1-м элементом list2 и так далее. Функция Zip перемещается слева направо, и кортеж, содержащий парные элементы, имеет тот же индекс, что и элементы, хранящиеся в них.





Использование Zip, когда у итераций разное количество элементов

В приведенном выше примере оба списка имеют одинаковое количество элементов. Если вы имеете дело с кодом, в котором в обоих списках не одинаковое количество элементов, функция zip остановится на последнем элементе списка, имеющем наименьшее количество элементов.

В приведенном ниже примере функция zip остановится на элементе c, независимо от того, имеет ли list2 еще один элемент.



list1знак равно ['к', 'b', 'c']
list2знак равно ['яблоко', 'мяч', 'Кот', 'кукла']
застегнутыйзнак равно застегивать(list1,list2)
Распечатать (список(застегнутый))

После выполнения примера кода, упомянутого выше, вы должны получить следующий результат:

[('a', 'яблоко'), ('b', 'ball'), ('c', 'cat')]

Вы можете использовать более двух итераций при использовании функции Zip

Обычно функция zip используется для сравнения двух повторяемых объектов. Однако вы можете передать любое количество итераций в качестве аргументов функции zip. Принцип остановки на последнем элементе самого короткого списка будет по-прежнему применяться.

list1знак равно ['к', 'b', 'c']
list2знак равно ['яблоко', 'мяч', 'Кот', 'кукла']
list3знак равно ['5', '3']
застегнутыйзнак равно застегивать(list1,list2,list3)
Распечатать (список(застегнутый))

После выполнения примера кода, упомянутого выше, вы должны получить следующий результат:

[('a', 'яблоко', '5'), ('b', 'мяч', '3')]

Создание индивидуальных списков из объекта типа Zip

Если у вас уже есть zip-объект, вы можете использовать его для повторного заполнения отдельных списков, которые ранее использовались, когда для них была впервые вызвана функция zip.

list1знак равно ['к', 'b', 'c']
list2знак равно ['яблоко', 'мяч', 'Кот', 'кукла']
list3знак равно ['5', '3']
застегнутыйзнак равно застегивать(list1,list2,list3)
l1,l2,l3знак равно застегивать(* на молнии)
Распечатать (список(l1), список(l2), список(l3))

После выполнения примера кода, упомянутого выше, вы должны получить следующий результат:

['a', 'b'] ['яблоко', 'мяч'] ['5', '3']

В приведенном выше примере кода zip-объект сдувается с помощью оператора *. Затем дефлированные результаты передаются в другой вызов функции zip, которая создает исходные списки. Обратите внимание, что вы не можете вернуть все элементы в исходные списки, если списки неравной длины использовались при создании zip-объекта в первый раз.

Использование Zip, если вы хотите, чтобы элементы не подвергались наибольшему итерации

В нескольких приведенных выше примерах вы могли заметить, что функция zip по умолчанию останавливается на последнем элементе самого короткого итеративного элемента. Что, если вы хотите, чтобы он продолжал итерацию, пока не достигнет последнего элемента самой длинной итерации?

В таком случае вам придется использовать метод zip_longest () из модуля Python itertools. Он работает так же, как и функция zip, с одним небольшим отличием: он останавливается на последнем элементе самого длинного итеративного типа.

из itertools Импортироватьzip_longest
list1знак равно ['к', 'b', 'c']
list2знак равно ['яблоко', 'мяч', 'Кот', 'кукла']
list3знак равно ['5', '3']
застегнутыйзнак равноzip_longest(list1,list2,list3)
Распечатать (список(застегнутый))

После выполнения примера кода, упомянутого выше, вы должны получить следующий результат:

[('a', 'apple', '5'), ('b', 'ball', '3'), ('c', 'cat', None), (None, 'doll', None) ]

Отсутствующие значения заполняются объектами типа «Нет». Вы также можете указать собственное значение для заполнения, передав дополнительный аргумент fillvalue методу zip_longest.

из itertools Импортироватьzip_longest
list1знак равно ['к', 'b', 'c']
list2знак равно ['яблоко', 'мяч', 'Кот', 'кукла']
list3знак равно ['5', '3']
застегнутыйзнак равноzip_longest(list1,list2,list3,fillvalueзнак равно'мое_значение')
Распечатать (список(застегнутый))

После выполнения примера кода, упомянутого выше, вы должны получить следующий результат:

[('a', 'apple', '5'), ('b', 'ball', '3'), ('c', 'cat', 'my_value'), ('my_value', 'кукла ',' my_value ')]

Заключение

Функцию Zip можно эмулировать с помощью некоторых циклов и операторов условий. Однако это помогает сохранять код организованным и чистым, удаляя ненужную многословность и повторяющиеся утверждения.