Python

Kuidas kasutada Pythonis ZIP-funktsiooni

Kuidas kasutada Pythonis ZIP-funktsiooni
See artikkel hõlmab Pythoni standardses mooduliteegis saadaval olevat funktsiooni „zip” juhendit. See meetod võimaldab teil kombineerida ja paaritada mitme itereeritava objekti elemente. Seejärel saate nendel paaridel käivitada täiendava loogika. Paljudel juhtudel on "zip" funktsiooni kasutamine palju tõhusam ja puhtam kui mitme, sisestatud silmuse "for" kasutamine.

Teave Zip-funktsiooni kohta

Nagu varem öeldud, kasutatakse funktsiooni “zip” paari loomiseks mitme korduva objekti elementidest. Kaaluge allpool toodud näidet, et mõista ZIP-funktsiooni põhisüntaksit ja kasutamist:

list1 = ["a", "b", "c"]
list2 = ["õun", "pall", "kass"]
lukuga = zip (loend1, loend2)
print (loend (lukuga))

Kaks ülaltoodud koodinäidise esimest lauset määratlevad kaks loendit, mis sisaldavad mõnda elementi. Järgmisena kasutatakse funktsiooni „zip”, edastades argumentidena muutujad „list1” ja „list2”. See on funktsiooni “zip” peamine süntaks. Argumentidena, mille elemente soovite kombineerida, peate lihtsalt edastama loendid või muud kehtivad tellitud iterable-d. Lõpuks kasutatakse printimislauset muutuja “zipped” väljundi saamiseks. Pärast ülalnimetatud koodinäidise käivitamist peaksite saama järgmise väljundi:

[('a', 'õun'), ('b', 'pall'), ('c', 'kass')]

Pange tähele, et funktsioon „zip” tagastab „zip” tüüpi objekti, mitte loendi. Peate selle teisendatavaks tüübiks teisendama, nagu on näidatud ülaltoodud printimisavalduses.

Lihtsamalt öeldes võtab funktsioon „zip“ kahest loendist üles sama indeksi elemendid ja kombineerib need paarina paarina. Nii et “list1” 0. element on ühendatud “list2” 0. elemendiga, “list1” 1. element on ühendatud “list2” 1. elemendiga ja nii edasi. Zip-funktsioon liigub vasakult paremale ja paaristatud elemente sisaldaval dupleksil on sama indeks kui nendesse salvestatud elementidel.

Zip-i kasutamine, kui korduvatel pole sama arvu elemente

Eespool toodud näites on mõlemal loendil võrdne arv elemente. Kui teil on tegemist mõne koodiga, kus mõlemas loendis pole sama arvu elemente, peatub funktsioon „zip“ loendi viimasel elemendil, millel on kõige vähem elemente.

Allpool toodud näites peatub funktsioon „zip“ elemendi „c“ juures, olenemata sellest, kas „list2“ sisaldab veel ühte elementi.

list1 = ["a", "b", "c"]
list2 = ["õun", "pall", "kass", "nukk"]
lukuga = zip (loend1, loend2)
print (loend (lukuga))

Pärast ülalnimetatud koodinäidise käivitamist peaksite saama järgmise väljundi:

[('a', 'õun'), ('b', 'pall'), ('c', 'kass')]

Zip-funktsiooni kasutamisel saate kasutada rohkem kui kahte itterable'i

Tavaliselt kasutatakse funktsiooni “zip” kahe korduva objekti võrdlemiseks. Funktsioonile "zip" saate siiski argumentidena edastada suvalise arvu korduvaid. Lühima loendi viimases elemendis peatumise põhimõte jääb endiselt kehtima.

list1 = ["a", "b", "c"]
list2 = ["õun", "pall", "kass", "nukk"]
list3 = ["5", "3"]
zip = zip (loend1, loend2, loend3)
print (loend (lukuga))

Pärast ülalnimetatud koodinäidise käivitamist peaksite saama järgmise väljundi:

[('a', 'õun', '5'), ('b', 'pall', '3')]

Individuaalsete loendite loomine ZIP-tüüpi objektist

Kui teil on juba „zip“ objekt, saate seda kasutada üksikute loendite uuesti asustamiseks, mida varem kasutati, kui ZIP-funktsioon neile esimest korda kutsuti.

list1 = ["a", "b", "c"]
list2 = ["õun", "pall", "kass", "nukk"]
list3 = ["5", "3"]
zip = zip (loend1, loend2, loend3)
l1, l2, l3 = tõmblukk (* lukuga)
print (loend (l1), loend (l2), loend (l3))

Pärast ülalnimetatud koodinäidise käivitamist peaksite saama järgmise väljundi:

['a', 'b'] ['õun', 'pall'] ['5', '3']

Ülaltoodud koodinäites tühjendatakse „zip” objekt operaatori „*” abil. Tühjendatud tulemused suunatakse seejärel teise zip-funktsiooni poole, mis loob algsed loendid. Pange tähele, et te ei pruugi kõiki elemente algsesse loendisse tagasi tuua, kui objekti „zip” esmakordsel loomisel kasutati ebavõrdse pikkusega loendeid.

Zip-i kasutamine siis, kui soovite elemente hoida kõige kauem pöörduvatena

Mitmes ülaltoodud näites võite olla märganud, et vaikimisi peatub „zip” funktsioon kõige lühema iteratsiooni viimasel elemendil. Mis siis, kui soovite, et see jätkaks itereerimist seni, kuni see jõuab kõige pikema korduva viimase elemendini?

Sellisel juhul peate kasutama Pythoni mooduli “itertools” meetodit “zip_longest ()”. See töötab samamoodi nagu funktsioon "zip", ühe väikese erinevusega, et see peatub kõige pikema itereeritava tüübi viimases elemendis.

itertoolidest importige zip_longest
list1 = ["a", "b", "c"]
list2 = ["õun", "pall", "kass", "nukk"]
list3 = ["5", "3"]
lukuga = zip_longest (loend1, loend2, loend3)
print (loend (lukuga))

Pärast ülalnimetatud koodinäidise käivitamist peaksite saama järgmise väljundi:

[('a', 'õun', '5'), ('b', 'pall', '3'), ('c', 'kass', pole), (puudub, 'nukk', pole) ]

Puuduvad väärtused täidetakse „Puuduvad“ tüüpi objektidena. Võite ka sisestada oma väärtuse täitmiseks, edastades meetodile „zip_longest” täiendava argumendi „fillvalue”.

itertoolidest importige zip_longest
list1 = ["a", "b", "c"]
list2 = ["õun", "pall", "kass", "nukk"]
list3 = ["5", "3"]
zipped = zip_longest (loend1, loend2, loend3, täiteväärtus = "minu_väärtus")
print (loend (lukuga))

Pärast ülalnimetatud koodinäidise käivitamist peaksite saama järgmise väljundi:

[('a', 'õun', '5'), ('b', 'pall', '3'), ('c', 'kass', 'minu_väärtus'), ('minu_väärtus', 'nukk' ',' minu_väärtus ')]

Järeldus

Zip-funktsiooni saab jäljendada mõningate tsüklite ja tingimuste avalduste abil. Kuid see aitab hoida koodi korrastatud ja puhtamana, eemaldades tarbetu paljusõnalisuse ja korduvad avaldused.

Parimad Linuxi käsurea mängud
Käsurida pole Linuxi kasutamisel lihtsalt teie suurim liitlane - see võib olla ka meelelahutusallikas, sest saate seda kasutada paljude lõbusate mängu...
Parimad Linuxi mängupuldi kaardistamise rakendused
Kui teile meeldib mängida Linuxis mänge tavalise klaviatuuri ja hiire sisestussüsteemi asemel mängupuldiga, on teie jaoks mõned kasulikud rakendused. ...
Kasulikud tööriistad Linuxi mängijatele
Kui teile meeldib Linuxis mänge mängida, on tõenäoline, et olete mängukogemuse parandamiseks kasutanud selliseid rakendusi ja utiliite nagu Wine, Lutr...