Piton

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

Cum se folosește funcția Zip în 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. Puteți rula apoi o logică suplimentară pe aceste perechi. În multe cazuri, utilizarea unei funcții „zip” este mult mai eficientă și mai curată decât utilizarea mai multor bucle „pentru” imbricate.

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 = ["a", "b", "c"]
list2 = ["măr", "minge", "pisică"]
zipped = zip (list1, list2)
print (listă (zip))

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 sintaxa principală 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 sfârșit, declarația de tipărire este utilizată pentru a obține rezultatul variabilei „zip”. După ce rulați exemplul 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 „list1” este combinat cu elementul 0 din „list2”, primul element din „list1” este combinat cu primul element din „list2” și așa mai departe. Funcția Zip se deplasează de la stânga la dreapta, iar tuplul care conține elemente împerecheate are același index ca elementele stocate în ele.

Utilizarea Zip când Iterables 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 = ["a", "b", "c"]
list2 = ["măr", "minge", "pisică", "păpușă"]
zipped = zip (list1, list2)
print (listă (zip))

După ce rulați exemplul 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 = ["a", "b", "c"]
list2 = ["măr", "minge", "pisică", "păpușă"]
list3 = ["5", "3"]
zipped = zip (list1, list2, list3)
print (listă (zip))

După rularea eșantionului de cod menționat mai sus, ar trebui să obțineți următoarea ieșire ca 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 repopularea listelor individuale care au fost utilizate anterior când funcția zip a fost apelată pentru prima dată pe ele.

list1 = ["a", "b", "c"]
list2 = ["măr", "minge", "pisică", "păpușă"]
list3 = ["5", "3"]
zipped = zip (list1, list2, list3)
l1, l2, l3 = zip (* fermoar)
print (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 itertools import zip_longest
list1 = ["a", "b", "c"]
list2 = ["măr", "minge", "pisică", "păpușă"]
list3 = ["5", "3"]
zipped = zip_longest (list1, list2, list3)
print (listă (zip))

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

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

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

din itertools import zip_longest
list1 = ["a", "b", "c"]
list2 = ["măr", "minge", "pisică", "păpușă"]
list3 = ["5", "3"]
zipped = zip_longest (list1, list2, list3, fillvalue = "my_value")
print (listă (zip))

După rularea eșantionului de cod menționat mai sus, ar trebui să obțineți următoarea ieșire ca 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 declarații de bucle și condiții. Cu toate acestea, ajută la menținerea codului organizat și mai curat, eliminând verbozitatea inutilă și declarațiile repetitive.

Cursor jumps or moves randomly while typing in Windows 10
If you find that your mouse cursor jumps or moves on its own, automatically, randomly while typing in Windows laptop or computer, then some of these s...
How to reverse Mouse and Touchpads scrolling direction in Windows 10
Mouse and Touchpads not only make computing easy but more efficient and less time-consuming. We cannot imagine a life without these devices, but still...
How to change Mouse pointer and cursor size, color & scheme on Windows 10
The mouse pointer and cursor in Windows 10 are very important aspects of the operating system. This can be said for other operating systems as well, s...