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_longestsaraksts1= ['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_longestsaraksts1= ['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.