Cum se folosește funcția Zip în Python

How Use Zip Function Python



Acest articol va acoperi un ghid despre funcția zip disponibil în biblioteca standard de module Python. Această metodă vă permite să combinați și să asociați elemente ale mai multor obiecte iterabile. Apoi puteți rula logica suplimentară pe aceste perechi. În multe cazuri, utilizarea unei funcții zip este mult mai eficientă și mai curată decât utilizarea mai multor cuiburi pentru bucle.

Despre funcția Zip

După cum sa menționat anterior, funcția zip este utilizată pentru a crea perechi din elemente ale mai multor obiecte iterabile. Luați în considerare exemplul de mai jos pentru a înțelege sintaxa de bază și utilizarea funcției zip:







list1= ['la', 'b', „c”]
list2= ['măr', 'minge', 'pisică']
cu fermoar= fermoar(list1,list2)
imprimare (listă(cu fermoar))

Primele două afirmații din exemplul de cod de mai sus definesc două liste care conțin unele elemente. În continuare, funcția zip este utilizată prin trecerea variabilelor list1 și list2 ca argumente. Aceasta este principala sintaxă a funcției zip. Trebuie doar să treceți liste sau alte iterabile ordonate valide ca argumente ale căror elemente doriți să le combinați. În cele din urmă, declarația de tipărire este utilizată pentru a obține rezultatul variabilei zip. După rularea eșantionului de cod menționat mai sus, ar trebui să obțineți următoarea ieșire:



[(„a”, „măr”), („b”, „minge”), („c”, „pisică”)]

Rețineți că funcția zip returnează un obiect de tip zip și nu o listă. Trebuie să îl convertiți într-un tip iterabil, așa cum se arată în declarația de imprimare de mai sus.



În termeni simpli, funcția zip preia elemente din același index din două liste și le combină ca o pereche într-un tuplu. Deci, elementul 0 din lista1 este combinat cu elementul 0 din lista2, primul element din lista1 este combinat cu primul element din lista2 și așa mai departe. Funcția Zip se deplasează de la stânga la dreapta, iar opțiunea care conține elemente împerecheate are același index ca elementele stocate în ele.





Utilizarea Zip când Iterabilele nu au același număr de elemente

În exemplul menționat mai sus, ambele liste au un număr egal de elemente. În cazul în care aveți de-a face cu un cod în care ambele liste nu au același număr de elemente, funcția zip se va opri la ultimul element al listei cu cel mai mic număr de elemente.

În exemplul de mai jos, funcția zip se va opri la elementul c, indiferent dacă list2 are încă un element.



list1= ['la', 'b', „c”]
list2= ['măr', 'minge', 'pisică', 'păpuşă']
cu fermoar= fermoar(list1,list2)
imprimare (listă(cu fermoar))

După rularea eșantionului de cod menționat mai sus, ar trebui să obțineți următoarea ieșire:

[(„a”, „măr”), („b”, „minge”), („c”, „pisică”)]

Puteți utiliza mai mult de două iterabile atunci când utilizați funcția Zip

De obicei, funcția zip este utilizată pentru a compara două obiecte iterabile. Cu toate acestea, puteți trece orice număr de iterabile ca argumente funcției zip. Principiul opririi la ultimul element al celei mai scurte liste va fi în continuare aplicabil.

list1= ['la', 'b', „c”]
list2= ['măr', 'minge', 'pisică', 'păpuşă']
list3= [„5”, „3”]
cu fermoar= fermoar(list1,list2,list3)
imprimare (listă(cu fermoar))

După rularea eșantionului de cod menționat mai sus, ar trebui să obțineți următorul rezultat:

[(„a”, „măr”, „5”), („b”, „minge”, „3”)]

Crearea listelor individuale dintr-un obiect de tip zip

Dacă aveți deja un obiect zip, îl puteți folosi pentru a repopula liste individuale care au fost folosite anterior când funcția zip a fost apelată pentru prima dată pe ele.

list1= ['la', 'b', „c”]
list2= ['măr', 'minge', 'pisică', 'păpuşă']
list3= [„5”, „3”]
cu fermoar= fermoar(list1,list2,list3)
l1,l2,l3= fermoar(* fermoar)
imprimare (listă(l1), listă(l2), listă(l3))

După rularea eșantionului de cod menționat mai sus, ar trebui să obțineți următorul rezultat:

['a', 'b'] ['măr', 'minge'] ['5', '3']

În exemplul de cod de mai sus, obiectul zip este dezumflat folosind operatorul *. Rezultatele dezumflate sunt apoi introduse într-o altă funcție de apelare la zip care creează liste originale. Rețineți că este posibil să nu primiți toate elementele înapoi în listele originale dacă au fost utilizate liste de lungime inegală atunci când obiectul zip a fost creat prima dată.

Utilizarea Zip când doriți să păstrați elementele din cea mai lungă iterabilă

În mai multe exemple de mai sus, este posibil să fi observat că funcția zip se oprește implicit la ultimul element al celui mai scurt iterabil. Ce se întâmplă dacă doriți să continue iterarea până când ajunge la ultimul element din cea mai lungă iterabilă?

Într-un astfel de caz, va trebui să utilizați metoda zip_longest () din modulul itertools al Python. Funcționează la fel ca funcția zip, cu o mică diferență că se oprește la ultimul element al celui mai lung tip iterabil.

din instrumente importzip_longest
list1= ['la', 'b', „c”]
list2= ['măr', 'minge', 'pisică', 'păpuşă']
list3= [„5”, „3”]
cu fermoar=zip_longest(list1,list2,list3)
imprimare (listă(cu fermoar))

După rularea eșantionului de cod menționat mai sus, ar trebui să obțineți următorul rezultat:

[(„a”, „măr”, „5”), („b”, „minge”, „3”), („c”, „pisică”, Niciuna), (Niciuna, „păpușă”, Niciuna) ]

Valorile lipsă sunt populate ca obiecte de tip None. De asemenea, puteți furniza propria valoare de umplut prin trecerea unui argument de umplere suplimentar la metoda zip_longest.

din instrumente importzip_longest
list1= ['la', 'b', „c”]
list2= ['măr', 'minge', 'pisică', 'păpuşă']
list3= [„5”, „3”]
cu fermoar=zip_longest(list1,list2,list3,fillvalue=„valoarea_mea”)
imprimare (listă(cu fermoar))

După rularea eșantionului de cod menționat mai sus, ar trebui să obțineți următorul rezultat:

[(„a”, „măr”, „5”), („b”, „minge”, „3”), („c”, „pisică”, „valoarea_mea mea”), („valoarea_mea mea”, „păpușă” ',' valoarea_mea ')]

Concluzie

Funcția Zip poate fi imitată folosind unele instrucțiuni de bucle și condiții. Cu toate acestea, ajută la menținerea codului organizat și mai curat prin eliminarea verbozității inutile și a declarațiilor repetitive.