Kā lietot Zip funkciju Python

How Use Zip Function Python



Šis raksts aptvers rokasgrāmatu par zip funkciju, kas pieejama Python standarta moduļu bibliotēkā. Šī metode ļauj apvienot un savienot pārī vairāku atkārtojamu objektu elementus. Pēc tam šajos pāros varat izmantot papildu loģiku. Daudzos gadījumos zip funkcijas izmantošana ir daudz efektīvāka un tīrāka nekā vairāku, ligzdotu cilpu izmantošana.

Par Zip funkciju

Kā minēts iepriekš, zip funkcija tiek izmantota, lai izveidotu pārus no vairāku atkārtojamu objektu elementiem. Apsveriet zemāk redzamo piemēru, lai izprastu zip funkcijas pamata sintaksi un izmantošanu:







saraksts1= ['uz', 'b', 'c']
saraksts2= ['ābols', 'bumba', 'kaķis']
rāvējslēdzējs= rāvējslēdzējs(saraksts1,saraksts2)
drukāt (sarakstu(rāvējslēdzējs))

Pirmie divi iepriekšējā koda parauga paziņojumi definē divus sarakstus, kas satur dažus elementus. Tālāk zip funkcija tiek izmantota, nododot mainīgos list1 un list2 kā argumentus. Šī ir galvenā zip funkcijas sintakse. Jums vienkārši jānorāda saraksti vai citi derīgi sakārtoti iterables kā argumenti, kuru elementus vēlaties apvienot. Visbeidzot, drukāšanas paziņojums tiek izmantots, lai iegūtu izvelkamā mainīgā izvadi. Pēc iepriekš minētā koda parauga palaišanas jums vajadzētu iegūt šādu izvadi:



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

Ņemiet vērā, ka funkcija zip atgriež zip tipa objektu, nevis sarakstu. Jums tas jāpārveido atkārtojamam tipam, kā parādīts iepriekšējā drukas paziņojumā.



Vienkārši sakot, zip funkcija paņem viena indeksa elementus no diviem sarakstiem un apvieno tos kā pāri kartē. Tātad 0. elements no saraksta1 tiek apvienots ar saraksta2 otro elementu, 1. elements no saraksta1 ir apvienots ar saraksta2 pirmo elementu utt. Funkcija Zip pārvietojas no kreisās uz labo pusi, un kortelei, kas satur pārī savienotus elementus, ir tāds pats indekss kā tajos saglabātajiem elementiem.





Zip izmantošana, kad iterāļiem nav vienāda elementu skaita

Iepriekš minētajā piemērā abos sarakstos ir vienāds elementu skaits. Ja strādājat ar kādu kodu, kurā abos sarakstos nav vienāds elementu skaits, zip funkcija apstāsies pēdējā saraksta elementā, kurā ir vismazākais elementu skaits.

Zemāk redzamajā piemērā zip funkcija apstāsies pie c elementa neatkarīgi no tā, vai sarakstā 2 ir vēl viens elements.



saraksts1= ['uz', 'b', 'c']
saraksts2= ['ābols', 'bumba', 'kaķis', 'lelle']
rāvējslēdzējs= rāvējslēdzējs(saraksts1,saraksts2)
drukāt (sarakstu(rāvējslēdzējs))

Pēc iepriekš minētā koda parauga palaišanas jums vajadzētu iegūt šādu izvadi:

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

Izmantojot funkciju Zip, varat izmantot vairāk nekā divus iterāļus

Parasti zip funkciju izmanto, lai salīdzinātu divus atkārtojamus objektus. Tomēr zip funkcijai kā argumentus varat nodot neierobežotu skaitu atkārtojamu lietu. Joprojām būs spēkā princips apstāties pie īsākā saraksta pēdējā elementa.

saraksts1= ['uz', 'b', 'c']
saraksts2= ['ābols', 'bumba', 'kaķis', 'lelle']
saraksts3= [“5”, '3']
rāvējslēdzējs= rāvējslēdzējs(saraksts1,saraksts2,saraksts3)
drukāt (sarakstu(rāvējslēdzējs))

Pēc iepriekš minētā koda parauga palaišanas jums vajadzētu iegūt šādu izvadi:

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

Individuālu sarakstu izveide no Zip tipa objekta

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

saraksts1= ['uz', 'b', 'c']
saraksts2= ['ābols', 'bumba', 'kaķis', 'lelle']
saraksts3= [“5”, '3']
rāvējslēdzējs= rāvējslēdzējs(saraksts1,saraksts2,saraksts3)
l1,l2,l3= rāvējslēdzējs(*rāvējslēdzējs)
drukāt (sarakstu(l1), sarakstu(l2), sarakstu(l3))

Pēc iepriekš minētā koda parauga palaišanas jums vajadzētu iegūt šādu izvadi:

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

Iepriekš redzamajā koda paraugā zip objekts tiek iztukšots, izmantojot * operatoru. Iztukšotie rezultāti tiek ievadīti citā zip zip funkcijā, kas izveido oriģinālos sarakstus. Ņemiet vērā, ka sākotnējos sarakstos var neatgriezties visi elementi, ja zip objekta pirmās izveides laikā tika izmantoti nevienāda garuma saraksti.

Zip izmantošana, ja vēlaties, lai elementi nebūtu garāki neatkārtojami

Vairākos iepriekš minētajos piemēros, iespējams, esat ievērojuši, ka zip funkcija pēc noklusējuma apstājas īsākā atkārtojamā pēdējā elementā. Ko darīt, ja vēlaties, lai tā atkārtotu, līdz sasniegs garāko atkārtojamo 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ā rāvējslēdzēja funkcija, ar vienu nelielu atšķirību, ka tas apstājas pie garāko atkārtojamā tipa pēdējā elementa.

no itertools importētzip_longest
saraksts1= ['uz', 'b', 'c']
saraksts2= ['ābols', 'bumba', 'kaķis', 'lelle']
saraksts3= [“5”, '3']
rāvējslēdzējs=zip_longest(saraksts1,saraksts2,saraksts3)
drukāt (sarakstu(rāvējslēdzējs))

Pēc iepriekš minētā koda parauga palaišanas jums vajadzētu iegūt šādu izvadi:

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

Trūkstošās vērtības tiek aizpildītas kā None tipa objekti. Varat arī aizpildīt savu vērtību, nosakot papildu aizpildīšanas vērtības argumentu zip_longest metodei.

no itertools importētzip_longest
saraksts1= ['uz', 'b', 'c']
saraksts2= ['ābols', 'bumba', 'kaķis', 'lelle']
saraksts3= [“5”, '3']
rāvējslēdzējs=zip_longest(saraksts1,saraksts2,saraksts3,aizpildījuma vērtība='my_value')
drukāt (sarakstu(rāvējslēdzējs))

Pēc iepriekš minētā koda parauga palaišanas jums vajadzētu iegūt šādu izvadi:

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

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 daudzpusību un atkārtotus paziņojumus.