Python

Kako uporabljati funkcijo zip v Pythonu

Kako uporabljati funkcijo zip v Pythonu
Ta članek bo zajemal vodnik o funkciji »zip«, ki je na voljo v Pythonovi standardni knjižnici modulov. Ta metoda omogoča kombiniranje in seznanjanje elementov več ponovljivih predmetov. Nato lahko zaženete nadaljnjo logiko na teh parih. V mnogih primerih je uporaba funkcije »zip« veliko bolj učinkovita in čistejša kot uporaba več, ugnezdenih zank »for«.

O funkciji zadrge

Kot smo že omenili, se funkcija "zip" uporablja za ustvarjanje parov iz elementov več ponovljivih predmetov. Za razumevanje osnovne sintakse in uporabe funkcije zip si oglejte spodnji primer:

list1 = ["a", "b", "c"]
list2 = ["jabolko", "krogla", "mačka"]
stisnjeno = zip (seznam1, seznam2)
natisni (seznam (stisnjen))

Prva dva stavka v zgornjem vzorčnem kodu definirata dva seznama, ki vsebujeta nekatere elemente. Nato se funkcija „zip“ uporablja tako, da kot argumenta posredujeta spremenljivki „list1“ in „list2“. To je glavna sintaksa funkcije "zip". Kot argumente, katerih elemente želite združiti, morate le posredovati sezname ali druge veljavne urejene iterable. Nazadnje se izjava za tiskanje uporablja za izpis spremenljivke "stisnjeno". Po zagonu zgoraj omenjenega vzorca kode bi morali dobiti naslednji izhod:

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

Upoštevajte, da funkcija »zip« vrne predmet vrste »zip« in ne seznama. Pretvoriti ga morate v iterabilno vrsto, kot je prikazano v zgornji izjavi za tiskanje.

Preprosto povedano, funkcija »zip« pobere elemente istega indeksa z dveh seznamov in jih združi kot par v naboru. Torej je 0. element iz "list1" kombiniran z 0. elementom "list2", 1. element iz "list1" je kombiniran s 1. elementom "list2" itd. Funkcija zip se premika od leve proti desni in nabor, ki vsebuje seznanjene elemente, ima enak indeks kot elementi, shranjeni v njih.

Uporaba stiskalnice, kadar iterables nimajo enakega števila elementov

V zgoraj navedenem primeru imata oba seznama enako število elementov. V primeru, da imate opravka s kodo, pri kateri oba seznama nimata enakega števila elementov, se funkcija »zip« ustavi pri zadnjem elementu seznama z najmanjšim številom elementov.

V spodnjem primeru se bo funkcija “zip” ustavila pri elementu “c”, ne glede na to, da ima “list2” še en element.

list1 = ["a", "b", "c"]
list2 = ["jabolko", "žoga", "mačka", "lutka"]
stisnjeno = zip (seznam1, seznam2)
natisni (seznam (stisnjen))

Po zagonu zgoraj omenjenega vzorca kode bi morali dobiti naslednji izhod:

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

Ko uporabljate funkcijo zadrge, lahko uporabite več kot dve iterables

Običajno se funkcija "zip" uporablja za primerjavo dveh iterabilnih predmetov. Vendar lahko funkciji “zip” kot argumente posredujete poljubno število ponovljivih elementov. Še vedno bo veljalo načelo ustavitve pri zadnjem elementu najkrajšega seznama.

list1 = ["a", "b", "c"]
list2 = ["jabolko", "žoga", "mačka", "lutka"]
list3 = ["5", "3"]
stisnjeno = zip (seznam1, seznam2, seznam3)
natisni (seznam (stisnjen))

Po zagonu zgoraj omenjenega vzorca kode bi morali kot rezultat dobiti naslednji izhod:

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

Ustvarjanje posameznih seznamov iz predmeta vrste Zip

Če že imate »zip« objekt, ga lahko uporabite za ponovno naselitev posameznih seznamov, ki so bili prej uporabljeni, ko je bila na njih prvič uporabljena funkcija zip.

list1 = ["a", "b", "c"]
list2 = ["jabolko", "žoga", "mačka", "lutka"]
list3 = ["5", "3"]
stisnjeno = zip (seznam1, seznam2, seznam3)
l1, l2, l3 = zadrga (* stisnjena)
tiskanje (seznam (l1), seznam (l2), seznam (l3))

Po zagonu zgoraj omenjenega vzorca kode bi morali kot rezultat dobiti naslednji izhod:

['a', 'b'] ['jabolko', 'kroglica'] ['5', '3']

V zgornjem vzorčnem kodu se objekt "zip" izprazni z uporabo operatorja "*". Izpuščeni rezultati se nato pošljejo v drugo funkcijo klica v zip, ki ustvari izvirne sezname. Upoštevajte, da morda ne boste dobili vseh elementov nazaj na prvotnih seznamih, če so bili prvič ustvarjeni predmeti »zip« z neenako dolžino.

Uporaba zadrge, ko želite ohraniti elemente iz najdaljše ponovljive

V več zgornjih primerih ste morda opazili, da se funkcija "zip" privzeto ustavi pri zadnjem elementu najkrajšega iterabila. Kaj pa, če želite, da se še naprej ponavlja, dokler ne doseže zadnjega elementa najdaljšega ponavljanja?

V takem primeru boste morali uporabiti metodo “zip_longest ()” iz Pythonovega modula “itertools”. Deluje enako kot funkcija "zip", z eno majhno razliko, da se ustavi pri zadnjem elementu najdaljšega iterabilnega tipa.

iz itertools uvozi zip_longest
list1 = ["a", "b", "c"]
list2 = ["jabolko", "žoga", "mačka", "lutka"]
list3 = ["5", "3"]
stisnjeno = zip_longest (seznam1, seznam2, seznam3)
natisni (seznam (stisnjen))

Po zagonu zgoraj omenjenega vzorca kode bi morali kot rezultat dobiti naslednji izhod:

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

Manjkajoče vrednosti se naselijo kot predmeti tipa »Brez«. Lahko tudi vnesete lastno vrednost za zapolnitev, tako da posredujete dodaten argument »fillvalue« v metodo »zip_longest«.

iz itertools uvozi zip_longest
list1 = ["a", "b", "c"]
list2 = ["jabolko", "žoga", "mačka", "lutka"]
list3 = ["5", "3"]
stisnjeno = zip_longest (seznam1, seznam2, seznam3, fillvalue = "moja_vrednost")
natisni (seznam (stisnjen))

Po zagonu zgoraj omenjenega vzorca kode bi morali kot rezultat dobiti naslednji izhod:

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

Zaključek

Zip funkcijo lahko posnemate z uporabo nekaterih zank in pogojev. Vendar pa pomaga pri urejanju in čistejši kodi z odstranjevanjem nepotrebnih podrobnosti in ponavljajočih se izjav.

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...
S pomočjo gumba X-Mouse Button Control različno prilagodite gumbe miške za različno programsko opremo
Mogoče potrebujete orodje, ki bi lahko spremenilo nadzor miške z vsako aplikacijo, ki jo uporabljate. V tem primeru lahko preizkusite aplikacijo z ime...
Microsoft Sculpt Touch Wireless Mouse Review
Pred kratkim sem prebral o Microsoftov kiparski dotik brezžično miško in se odločil za nakup. Potem ko sem ga nekaj časa uporabljal, sem se odločil, d...