Mètode Python zip(). pren contenidors iterables i retorna un únic objecte iterador, amb valors mapejats de tots els contenidors.
Sintaxi de Python zip().
S'acostuma a mapeu l'índex similar de diversos contenidors perquè es puguin utilitzar només amb una sola entitat.
Sintaxi: zip(*iteradors)
Paràmetres: Iterables o contenidors de Python (llista, cadena, etc.)
Valor de retorn: Retorna un únic objecte iterador.
zip() en exemples de Python
Python zip() amb llistes
En Python , la funció zip() s'utilitza per combinar dos o més llistes (o qualsevol altre iterable) en un únic iterable, on els elements de les posicions corresponents estan emparellats. L'iterable resultant conté tuples , on el primer element de cada llista està emparellat, el segon element de cada llista està emparellat, i així successivament.
Python 3
name> => [> 'Manjeet'> ,> 'Nikhil'> ,> 'Shambhavi'> ,> 'Astha'> ]> roll_no> => [> 4> ,> 1> ,> 3> ,> 2> ]> # using zip() to map values> mapped> => zip> (name, roll_no)> print> (> set> (mapped))> |
>
>Sortida
{('Nikhil', 1), ('Shambhavi', 3), ('Manjeet', 4), ('Astha', 2)}>
Python zip() amb enumerate
La combinació de zip() i enumerar() és útil en escenaris en què voleu processar diverses llistes o tuples en paral·lel, i també necessiteu accedir als seus índexs per a qualsevol propòsit específic.
Python 3
names> => [> 'Mukesh'> ,> 'Roni'> ,> 'Chari'> ]> ages> => [> 24> ,> 50> ,> 18> ]> for> i, (name, age)> in> enumerate> (> zip> (names, ages)):> > print> (i, name, age)> |
>
>Sortida
0 Mukesh 24 1 Roni 50 2 Chari 18>
Python zip() amb diccionari
La funció zip() a Python s'utilitza per combinar dos o més iterables diccionaris en un únic iterable, on els elements corresponents de l'iterable d'entrada es combinen com a tuples. Quan s'utilitza zip() amb diccionaris, combina les claus i els valors dels diccionaris en funció de la seva posició al diccionari.
Python 3
stocks> => [> 'GEEKS'> ,> 'For'> ,> 'geeks'> ]> prices> => [> 2175> ,> 1127> ,> 2750> ]> new_dict> => {stocks: prices> for> stocks,> > prices> in> zip> (stocks, prices)}> print> (new_dict)> |
>
>Sortida
{'GEEKS': 2175, 'For': 1127, 'geeks': 2750}>
Python zip() amb Tuple
Quan s'utilitza amb tuples, zip() funciona emparellant els elements de tuples en funció de les seves posicions. L'iterable resultant conté tuples on la tupla i conté l'element i de cada tupla d'entrada.
Python 3
tuple1> => (> 1> ,> 2> ,> 3> )> tuple2> => (> 'a'> ,> 'b'> ,> 'c'> )> zipped> => zip> (tuple1, tuple2)> result> => list> (zipped)> print> (result)> |
c booleà
>
>
Sortida:
[(1, 'a'), (2, 'b'), (3, 'c')]>
Python zip() amb múltiples iterables
La funció zip() de Python també es pot utilitzar per combinar més de dos iterables. Pot prendre múltiples iterables com a entrada i retornar un iterable de tuples, on cada tupla conté elements de les posicions corresponents dels iterables d'entrada.
Python 3
list1> => [> 1> ,> 2> ,> 3> ]> list2> => [> 'a'> ,> 'b'> ,> 'c'> ]> list3> => [> 'x'> ,> 'y'> ,> 'z'> ]> zipped> => zip> (list1, list2, list3)> result> => list> (zipped)> print> (result)> |
>
>Sortida
[(1, 'a', 'x'), (2, 'b', 'y'), (3, 'c', 'z')]>
Comprimir llistes de mida desigual
La funció zip() només iterarà sobre la llista més petita passada. Si es donen llistes de diferents longituds, la combinació resultant només serà tan llarga com la llista més petita aprovada. A l'exemple de codi següent:
Python 3
canviar el cas de java
# Define lists for 'persons', 'genders', and a tuple for 'ages'> persons> => [> 'Chandler'> ,> 'Monica'> ,> 'Ross'> ,> 'Rachel'> ,> 'Joey'> ,> 'Phoebe'> ,> 'Joanna'> ]> genders> => [> 'Male'> ,> 'Female'> ,> 'Male'> ,> 'Female'> ,> 'Male'> ,> 'Female'> ,> 'Female'> ]> ages> => (> 35> ,> 36> ,> 38> ,> 34> )> # Create a zipped object combining the 'persons' and 'genders'> #lists along with the 'ages' tuple> zipped_result> => zip> (persons, genders, ages)> # Print the zipped object> print> (> 'Zipped result as a list:'> )> for> i> in> list> (zipped_result):> > print> (i)> |
>
>Sortida
Zipped result as a list: ('Chandler', 'Male', 35) ('Monica', 'Female', 36) ('Ross', 'Male', 38) ('Rachel', 'Female', 34)>
Descomprimint amb zip()
Descomprimir significa convertir els valors comprimits de nou al jo individual tal com eren. Això es fa amb l'ajuda de * operador.
Python 3
# initializing lists> name> => [> 'Manjeet'> ,> 'Nikhil'> ,> 'Shambhavi'> ,> 'Astha'> ]> roll_no> => [> 4> ,> 1> ,> 3> ,> 2> ]> marks> => [> 40> ,> 50> ,> 60> ,> 70> ]> # using zip() to map values> mapped> => zip> (name, roll_no, marks)> # converting values to print as list> mapped> => list> (mapped)> # printing resultant values> print> (> 'The zipped result is : '> , end> => '')> print> (mapped)> print> (> '
'> )> # unzipping values> namz, roll_noz, marksz> => zip> (> *> mapped)> print> (> 'The unzipped result:
'> , end> => '')> # printing initial lists> print> (> 'The name list is : '> , end> => '')> print> (namz)> print> (> 'The roll_no list is : '> , end> => '')> print> (roll_noz)> print> (> 'The marks list is : '> , end> => '')> print> (marksz)> |
>
>
Sortida
The zipped result is : [('Manjeet', 4, 40), ('Nikhil', 1, 50), ('Shambhavi', 3, 60), ('Astha', 2, 70)] The unzipped result: The name list is : ('Manjeet', 'Nikhil', 'Shambhavi', 'Astha') The roll_no list is : (4, 1, 3, 2) The marks list is : (40, 50, 60, 70)>
Utilitzant zip() amb bucles Python
Hi ha moltes aplicacions possibles que es pot dir que s'executen amb zip, ja sigui base de dades d'estudiants o quadre de puntuació o qualsevol altra utilitat que requereixi mapeig de grups. A continuació es mostra un petit exemple de quadre de comandament.
Python 3
# Python code to demonstrate the application of> # zip()> # initializing list of players.> players> => [> 'Sachin'> ,> 'Sehwag'> ,> 'Gambhir'> ,> 'Dravid'> ,> 'Raina'> ]> # initializing their scores> scores> => [> 100> ,> 15> ,> 17> ,> 28> ,> 43> ]> # printing players and scores.> for> pl, sc> in> zip> (players, scores):> > print> (> 'Player : %s Score : %d'> %> (pl, sc))> |
>
>Sortida
Player : Sachin Score : 100 Player : Sehwag Score : 15 Player : Gambhir Score : 17 Player : Dravid Score : 28 Player : Raina Score : 43>