Piton

Kako koristiti Zip funkciju u Pythonu

Kako koristiti Zip funkciju u Pythonu
Ovaj će članak obuhvatiti vodič o funkciji “zip” dostupan u Pythonovoj knjižnici standardnih modula. Ova metoda omogućuje kombiniranje i uparivanje elemenata više iterabilnih objekata. Zatim možete pokrenuti daljnju logiku na tim parovima. U mnogim je slučajevima upotreba funkcije "zip" mnogo učinkovitija i čišća od upotrebe više ugniježđenih petlji "for".

O Zip funkciji

Kao što je ranije rečeno, funkcija "zip" koristi se za stvaranje parova od elemenata više iterabilnih objekata. Razmotrite donji primjer da biste razumjeli osnovnu sintaksu i upotrebu zip funkcije:

list1 = ["a", "b", "c"]
list2 = ["jabuka", "lopta", "mačka"]
zipovan = zip (popis1, popis2)
ispis (popis (zipovan))

Prve dvije izjave u gornjem uzorku koda definiraju dva popisa koji sadrže neke elemente. Dalje, funkcija „zip“ koristi se dodavanjem varijabli „list1“ i „list2“ kao argumente. Ovo je glavna sintaksa funkcije "zip". Jednostavno morate proslijediti popise ili druge valjane poredane iterable kao argumente čije elemente želite kombinirati. Na kraju, ispisni iskaz koristi se za dobivanje rezultata varijable “zipped”. Nakon pokretanja gore spomenutog uzorka koda, trebali biste dobiti sljedeći izlaz:

[('a', 'jabuka'), ('b', 'lopta'), ('c', 'mačka')]

Imajte na umu da funkcija "zip" vraća objekt tipa "zip", a ne popis. Morate ga pretvoriti u iterabilnu vrstu, kao što je prikazano u gornjoj izjavi za ispis.

Jednostavno rečeno, funkcija "zip" preuzima elemente istog indeksa s dva popisa i kombinira ih kao par u korijenu. Dakle, 0-i element iz “list1” kombinira se s 0-im elementom “list2”, 1. element iz “list1” kombinira se s 1. elementom “list2” i tako dalje. Zip funkcija kreće se slijeva udesno, a nabor koji sadrži uparene elemente ima isti indeks kao i elementi pohranjeni u njima.

Korištenje ZIP-a kada interaktivne komponente nemaju isti broj elemenata

U gore navedenom primjeru oba popisa imaju jednak broj elemenata. U slučaju da imate posla s nekim kodom gdje oba popisa nemaju jednak broj elemenata, funkcija "zip" zaustavit će se na zadnjem elementu popisa s najmanjim brojem elemenata.

U donjem primjeru funkcija "zip" zaustavit će se na elementu "c", bez obzira na to što "list2" ima još jedan element.

list1 = ["a", "b", "c"]
list2 = ["jabuka", "lopta", "mačka", "lutka"]
zipovan = zip (popis1, popis2)
ispis (popis (zipovan))

Nakon pokretanja gore spomenutog uzorka koda, trebali biste dobiti sljedeći izlaz:

[('a', 'jabuka'), ('b', 'lopta'), ('c', 'mačka')]

Kada koristite funkciju zip, možete koristiti više od dvije interaktivne komponente

Obično se funkcija "zip" koristi za usporedbu dva iterabilna objekta. Međutim, možete dodati bilo koji broj iterabilnih datoteka kao argumente funkciji "zip". Načelo zaustavljanja na posljednjem elementu najkraćeg popisa i dalje će biti primjenjivo.

list1 = ["a", "b", "c"]
list2 = ["jabuka", "lopta", "mačka", "lutka"]
list3 = ["5", "3"]
zipovan = zip (popis1, popis2, popis3)
ispis (popis (zipovan))

Nakon pokretanja gore spomenutog uzorka koda, trebali biste dobiti sljedeći izlaz kao rezultat:

[('a', 'jabuka', '5'), ('b', 'lopta', '3')]

Stvaranje pojedinačnih popisa iz predmeta tipa Zip

Ako već imate "zip" objekt, možete ga upotrijebiti za ponovno naseljavanje pojedinačnih popisa koji su ranije korišteni kada je na njih zip funkcija prvi put pozvana.

list1 = ["a", "b", "c"]
list2 = ["jabuka", "lopta", "mačka", "lutka"]
list3 = ["5", "3"]
zipovan = zip (popis1, popis2, popis3)
l1, l2, l3 = zip (* zipovani)
ispis (popis (l1), popis (l2), popis (l3))

Nakon pokretanja gore spomenutog uzorka koda, trebali biste dobiti sljedeći izlaz kao rezultat:

['a', 'b'] ['jabuka', 'lopta'] ['5', '3']

U gornjem uzorku koda, objekt "zip" ispuhan je pomoću operatora "*". Ispuhani rezultati zatim se dodaju u drugu funkciju poziva na zip koja stvara originalne popise. Imajte na umu da možda nećete dobiti sve elemente na izvornim popisima ako su korišteni popisi nejednake duljine kada je prvi put stvoren "zip" objekt.

Korištenje zip-a kada želite zadržati elemente iz najdužeg ponavljanja

U više gornjih primjera možda ste primijetili da se funkcija "zip" prema zadanim postavkama zaustavlja na zadnjem elementu najkraćeg iterabilnog. Što ako želite da se ponavlja i dalje dok ne dosegne posljednji element najdužeg ponavljanja?

U takvom slučaju morat ćete upotrijebiti metodu „zip_longest ()“ iz Pythonovog modula „itertools“. Radi isto kao i funkcija "zip", s jednom malom razlikom što se zaustavlja na posljednjem elementu najdužeg iterabilnog tipa.

iz itertools uvoza zip_longest
list1 = ["a", "b", "c"]
list2 = ["jabuka", "lopta", "mačka", "lutka"]
list3 = ["5", "3"]
zipovan = zip_longest (popis1, popis2, popis3)
ispis (popis (zipovan))

Nakon pokretanja gore spomenutog uzorka koda, trebali biste dobiti sljedeći izlaz kao rezultat:

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

Nedostajuće vrijednosti popunjavaju se kao objekti tipa "Ništa". Također možete dostaviti vlastitu vrijednost za popunjavanje dodavanjem dodatnog argumenta "fillvalue" u metodu "zip_longest".

iz itertools uvoza zip_longest
list1 = ["a", "b", "c"]
list2 = ["jabuka", "lopta", "mačka", "lutka"]
list3 = ["5", "3"]
zipovan = zip_longest (popis1, popis2, popis3, fillvalue = "moja_vrijednost")
ispis (popis (zipovan))

Nakon pokretanja gore spomenutog uzorka koda, trebali biste dobiti sljedeći izlaz kao rezultat:

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

Zaključak

Zip funkcija može se oponašati pomoću nekih petlji i naredbi uvjeta. Međutim, pomaže u održavanju koda organiziranim i čišćim uklanjanjem nepotrebnih detaljnosti i ponavljajućih izjava.

How to Change Mouse and Touchpad Settings Using Xinput in Linux
Most Linux distributions ship with “libinput” library by default to handle input events on a system. It can process input events on both Wayland and X...
Zamijenite svoje tipke miša različito za različiti softver pomoću X-Mouse Button Control
Možda vam treba alat koji bi mogao promijeniti kontrolu miša sa svakom aplikacijom koju koristite. Ako je to slučaj, možete isprobati aplikaciju pod n...
Microsoft Sculpt Touch bežični miš pregled
Nedavno sam čitao o Microsoft Sculpt Touch bežični miš i odlučio ga kupiti. Nakon što sam ga neko vrijeme koristio, odlučio sam s njim podijeliti svoj...