Python

Как да използвам Zip функция в Python

Как да използвам Zip функция в Python
Тази статия ще обхване ръководство за функцията “zip”, достъпна в стандартната библиотека на модули на Python. Този метод ви позволява да комбинирате и сдвоявате елементи от множество обекти, подлежащи на итерация. След това можете да изпълните допълнителна логика на тези двойки. В много случаи използването на функция „zip“ е много по-ефективно и по-чисто от използването на множество, вложени цикли „за“.

Относно функцията Zip

Както беше посочено по-рано, функцията „zip“ се използва за създаване на двойки от елементи на множество обекти, които могат да се итерират. Помислете за примера по-долу, за да разберете основния синтаксис и използването на zip функция:

list1 = ["a", "b", "c"]
list2 = ["ябълка", "топка", "котка"]
цип = цип (списък1, списък2)
печат (списък (цип))

Първите две изявления в горната примерна програма определят два списъка, съдържащи някои елементи. На следващо място, функцията „zip“ се използва чрез предаване на променливи „list1“ и „list2“ като аргументи. Това е основният синтаксис на функцията “zip”. Просто трябва да предадете списъци или други валидни подредени итерации като аргументи, чиито елементи искате да комбинирате. И накрая, инструкцията за печат се използва за получаване на изхода на променливата “zipped”. След като стартирате кодовата проба, спомената по-горе, трябва да получите следния изход:

[('a', 'apple'), ('b', 'ball'), ('c', 'cat')]

Обърнете внимание, че функцията „zip“ връща тип „zip“, а не списък. Трябва да го преобразувате в итерируем тип, както е показано в изявлението за печат по-горе.

С прости думи, функцията “zip” улавя елементи от един и същ индекс от два списъка и ги комбинира като двойка в кортеж. Така 0-ият елемент от “list1” се комбинира с 0-ия елемент на “list2”, 1-ият елемент от “list1” се комбинира с 1-ия елемент на “list2” и т.н. Zip функцията се движи отляво надясно и кортежът, съдържащ сдвоени елементи, има същия индекс като елементите, съхранявани в тях.

Използване на Zip, когато Iterables нямат същия брой елементи

В посочения по-горе пример и двата списъка имат еднакъв брой елементи. В случай, че имате работа с някакъв код, при който и двата списъка нямат еднакъв брой елементи, функцията „zip“ ще спре до последния елемент от списъка с най-малък брой елементи.

В примера по-долу функцията „zip“ ще спре до елемента „c“, независимо от това, че „list2“ има още един елемент.

list1 = ["a", "b", "c"]
list2 = ["ябълка", "топка", "котка", "кукла"]
цип = цип (списък1, списък2)
печат (списък (цип))

След като стартирате кодовата проба, спомената по-горе, трябва да получите следния изход:

[('a', 'apple'), ('b', 'ball'), ('c', 'cat')]

Можете да използвате повече от две Iterables, когато използвате Zip функция

Обикновено функцията “zip” се използва за сравняване на два обекта, които могат да се итерират. Можете обаче да предадете произволен брой итерации като аргументи на функцията „zip“. Принципът на спиране при последния елемент от най-краткия списък ще бъде все още приложим.

list1 = ["a", "b", "c"]
list2 = ["ябълка", "топка", "котка", "кукла"]
list3 = ["5", "3"]
цип = zip (списък1, списък2, списък3)
печат (списък (цип))

След като стартирате кодовата извадка, спомената по-горе, трябва да получите следния изход като резултат:

[('a', 'apple', '5'), ('b', 'ball', '3')]

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

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

list1 = ["a", "b", "c"]
list2 = ["ябълка", "топка", "котка", "кукла"]
list3 = ["5", "3"]
цип = zip (списък1, списък2, списък3)
l1, l2, l3 = цип (* цип)
печат (списък (l1), списък (l2), списък (l3))

След като стартирате кодовата проба, спомената по-горе, трябва да получите следния изход като резултат:

['a', 'b'] ['apple', 'ball'] ['5', '3']

В примера на кода по-горе обектът „zip“ се дефлира с помощта на оператора „*“. След това дефлираните резултати се подават в друга функция за повикване към zip, която създава оригинални списъци. Имайте предвид, че може да не получите всички елементи обратно в оригиналните списъци, ако са използвани списъци с неравномерна дължина, когато обектът „zip“ е създаден за първи път.

Използване на Zip, когато искате да запазите елементите от най-дългата итерация

В множество примери по-горе може да сте забелязали, че функцията „zip“ по подразбиране спира на последния елемент от най-краткия итеративен. Какво ще стане, ако искате да продължи да се повтаря, докато достигне последния елемент от най-дългия итерируем?

В такъв случай ще трябва да използвате метода “zip_longest ()” от модула “itertools” на Python. Работи по същия начин като функцията „zip“, с една малка разлика, че спира до последния елемент от най-дългия итерируем тип.

от itertools импортирайте zip_longest
list1 = ["a", "b", "c"]
list2 = ["ябълка", "топка", "котка", "кукла"]
list3 = ["5", "3"]
цип = zip_longest (списък1, списък2, списък3)
печат (списък (цип))

След като стартирате кодовата извадка, спомената по-горе, трябва да получите следния изход като резултат:

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

Липсващите стойности се попълват като обекти от типа „Няма“. Можете също така да предоставите своя собствена стойност за попълване, като предадете допълнителен аргумент „fillvalue“ на метода „zip_longest“.

от itertools импортирайте zip_longest
list1 = ["a", "b", "c"]
list2 = ["ябълка", "топка", "котка", "кукла"]
list3 = ["5", "3"]
цип = zip_longest (list1, list2, list3, fillvalue = "my_value")
печат (списък (цип))

След като стартирате кодовата извадка, спомената по-горе, трябва да получите следния изход като резултат:

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

Заключение

Zip функцията може да се емулира, като се използват някои цикли и оператори за условия. Въпреки това, той помага за поддържането на кода организиран и по-чист, като премахва ненужните многословия и повтарящи се твърдения.

Екранен тракпад и указател на мишката на AppyMouse за таблети с Windows
Потребителите на таблети често пропускат показалеца на мишката, особено когато са привични да използват лаптопите. Смартфоните и таблетите със сензоре...
Средният бутон на мишката не работи в Windows 10
The среден бутон на мишката ви помага да превъртате дълги уеб страници и екрани с много данни. Ако това спре, добре ще свършите да използвате клавиату...
Как да промените левия и десния бутон на мишката на компютър с Windows 10
Напълно нормално е всички устройства на компютърни мишки да са ергономично проектирани за десничари. Но има налични устройства за мишка, които са спец...