Python

Kā izmantot zip funkciju Python

Kā izmantot zip funkciju Python
Šajā rakstā būs ietverta rokasgrāmata par funkciju “zip”, kas pieejama Python standarta moduļu bibliotēkā. Šī metode ļauj apvienot un savienot vairāku atkārtojamu objektu elementus. Pēc tam šiem pāriem varat palaist papildu loģiku. Daudzos gadījumos “zip” funkcijas izmantošana ir daudz efektīvāka un tīrāka nekā vairāku, ligzdotu “for” cilpu izmantošana.

Par Zip funkciju

Kā minēts iepriekš, funkciju “zip” izmanto, lai izveidotu pārus no vairāku iterējamu objektu elementiem. Apsveriet tālāk sniegto piemēru, lai izprastu zip funkcijas pamata sintaksi un lietojumu:

saraksts1 = ["a", "b", "c"]
list2 = ["ābols", "bumba", "kaķis"]
zip = zip (saraksts1, saraksts2)
izdrukāt (saraksts (saspiests))

Pirmie divi apgalvojumi iepriekšminētajā koda paraugā definē divus sarakstus, kas satur dažus elementus. Pēc tam funkciju “zip” izmanto, nododot argumentus “list1” un “list2” mainīgos. Šī ir funkcijas “zip” galvenā sintakse. Jums vienkārši jānokārto saraksti vai citi derīgi sakārtoti atkārtoti kā argumenti, kuru elementus vēlaties apvienot. Visbeidzot, izdrukas paziņojumu izmanto, lai iegūtu mainīgā “zipped” izvadi. Pēc iepriekš minētā koda parauga palaišanas jums jāiegūst šāda izeja:

[('a', 'ābols'), ('b', 'bumba'), ('c', 'kaķis')]

Ņemiet vērā, ka funkcija “zip” atgriež objektu “zip”, nevis sarakstu. Jums tas jāpārvērš par atkārtojamu tipu, kā parādīts iepriekš izdrukātajā paziņojumā.

Vienkārši sakot, funkcija “zip” no viena saraksta paņem viena un tā paša indeksa elementus un apvieno tos kā pāri dubultā. Tātad 0. elements no “list1” tiek apvienots ar “list2” 0. elementu, 1. elements no “list1” ir apvienots ar “list2” 1. elementu utt. Zip funkcija pārvietojas no kreisās uz labo pusi, un pīlei, kas satur pārī savienotus elementus, ir tāds pats indekss kā tajos saglabātajiem elementiem.

Zip izmantošana, ja Iterables nav vienāda elementu skaita

Iepriekš minētajā piemērā abiem sarakstiem ir vienāds elementu skaits. Ja jums ir darīšana ar kādu kodu, kurā abiem sarakstiem nav vienāda elementu skaita, funkcija “zip” apstāsies pie saraksta pēdējā elementa, kurā ir vismazākais elementu skaits.

Zemāk esošajā piemērā funkcija “zip” apstāsies pie elementa “c”, neatkarīgi no tā, vai “list2” ir vēl viens elements.

saraksts1 = ["a", "b", "c"]
list2 = ["ābols", "bumba", "kaķis", "lelle"]
zip = zip (saraksts1, saraksts2)
izdrukāt (saraksts (saspiests))

Pēc iepriekš minētā koda parauga palaišanas jums jāiegūst šāda izeja:

[('a', 'ābols'), ('b', 'bumba'), ('c', 'kaķis')]

Izmantojot zip funkciju, varat izmantot vairāk nekā divus atkārtotos datus

Parasti divu atkārtojamu objektu salīdzināšanai tiek izmantota funkcija “zip”. Tomēr funkciju “zip” kā argumentus varat pārsūtīt jebkuru skaitu atkārtojamo versiju. Joprojām tiks piemērots princips apstāties pie īsākā saraksta pēdējā elementa.

saraksts1 = ["a", "b", "c"]
list2 = ["ābols", "bumba", "kaķis", "lelle"]
saraksts3 = ["5", "3"]
zip = zip (saraksts1, saraksts2, saraksts3)
izdrukāt (saraksts (saspiests))

Pēc iepriekš minētā koda parauga palaišanas jums jāiegūst šāda izeja:

[('a', 'ābols', '5'), ('b', 'bumba', '3')]

Atsevišķu sarakstu izveidošana no zip tipa objekta

Ja jums jau ir objekts “zip”, varat to izmantot, lai atkārtoti aizpildītu atsevišķus sarakstus, kas agrāk tika izmantoti, kad tos pirmo reizi izsauca.

saraksts1 = ["a", "b", "c"]
list2 = ["ābols", "bumba", "kaķis", "lelle"]
saraksts3 = ["5", "3"]
zip = zip (saraksts1, saraksts2, saraksts3)
l1, l2, l3 = rāvējslēdzējs (* rāvējslēdzējs)
drukāt (saraksts (l1), saraksts (l2), saraksts (l3))

Pēc iepriekš minētā koda parauga palaišanas jums jāiegūst šāda izeja:

['a', 'b'] ['ābols', 'bumba'] ['5', '3']

Iepriekš redzamajā koda paraugā objekts “zip” tiek iztukšots, izmantojot operatoru “*”. Deflēti rezultāti pēc tam tiek ievadīti citā zvana uz zip funkciju, kas izveido sākotnējos sarakstus. Ņemiet vērā, ka visus elementus, iespējams, neatgriezīsit sākotnējos sarakstos, ja, veidojot objektu “zip”, pirmo reizi tika izmantoti nevienāda garuma saraksti.

Zip izmantošana, kad vēlaties saglabāt elementus no visilgāk atdzistamajiem

Vairākos iepriekš minētajos piemēros, iespējams, novērojāt, ka funkcija “zip” pēc noklusējuma apstājas pie īsākā atkārtojamā elementa pēdējā elementa. Ko darīt, ja vēlaties, lai tas turpinātu atkārtot, līdz tas sasniedz visilgāk atkārtojamā elementa pēdējo elementu?

Šādā gadījumā jums būs jāizmanto metode “zip_longest ()” no Python “itertools” moduļa. Tas darbojas tāpat kā funkcija “zip” ar vienu nelielu atšķirību, ka tā apstājas pie garākā iterējamā tipa pēdējā elementa.

no itertooliem importēt zip_longest
saraksts1 = ["a", "b", "c"]
list2 = ["ābols", "bumba", "kaķis", "lelle"]
saraksts3 = ["5", "3"]
zipped = zip_longest (saraksts1, saraksts2, saraksts3)
izdrukāt (saraksts (saspiests))

Pēc iepriekš minētā koda parauga palaišanas jums jāiegūst šāda izeja:

[('a', 'ābols', '5'), ('b', 'bumba', '3'), ('c', 'kaķis', Neviens), (Nav, 'lelle', Nav) ]

Trūkstošās vērtības tiek aizpildītas kā “None” tipa objekti. Varat arī norādīt savu vērtību aizpildīšanai, nododot papildu argumentu “fillvalue” metodei “zip_longest”.

no itertooliem importēt zip_longest
saraksts1 = ["a", "b", "c"]
list2 = ["ābols", "bumba", "kaķis", "lelle"]
saraksts3 = ["5", "3"]
zipped = zip_longest (saraksts1, saraksts2, saraksts3, fillvalue = "mana_value")
izdrukāt (saraksts (saspiests))

Pēc iepriekš minētā koda parauga palaišanas jums jāiegūst šāda izeja:

[('a', 'ābols', '5'), ('b', 'bumba', '3'), ('c', 'kaķis', 'mana_vērtība'), ('mana_vērtība', 'lelle' ',' mana_vērtība ')]

Secinājums

Zip funkciju var atdarināt, izmantojot dažus cilpu un nosacījumu paziņojumus. Tomēr tas palīdz uzturēt kodu sakārtotu un tīrāku, novēršot nevajadzīgu daudzbalsību un atkārtotus paziņojumus.

Kā lejupielādēt un atskaņot Sid Meier Civilization VI operētājsistēmā Linux
Ievads spēlē Civilization 6 ir mūsdienīga klasiskā koncepcija, kas ieviesta Age of Empires spēļu sērijā. Ideja bija diezgan vienkārša; jūs sāktu pašā ...
Kā instalēt un spēlēt Doom uz Linux
Ievads liktenī Doom sērija radās 90. gados pēc sākotnējā Doom izlaišanas. Tas bija tūlītējs hīts, un kopš tā laika spēļu sērija ir saņēmusi daudzas ba...
Vulkan Linux lietotājiem
Ar katru jauno grafisko karšu paaudzi mēs redzam, kā spēļu izstrādātāji pārspēj grafiskās uzticamības robežas un tuvojas fotoreālismam. Neskatoties uz...