zip() en Python

Método zip() de Python toma contenedores iterables y devuelve un único objeto iterador, habiendo asignado valores de todos los contenedores.

Sintaxis de Python zip()

Es usado para Asigne el índice similar de múltiples contenedores para que puedan usarse simplemente usando una sola entidad.

Sintaxis: zip(*iteradores)

Parámetros: Iterables o contenedores de Python (lista, cadena, etc.)
Valor de retorno: Devuelve un único objeto iterador.

zip() en ejemplos de Python

Python zip() con listas

En Pitón , la función zip() se utiliza para combinar dos o más liza (o cualquier otro iterable) en un único iterable, donde los elementos de las posiciones correspondientes se emparejan. El iterable resultante contiene tuplas , donde el primer elemento de cada lista está emparejado, el segundo elemento de cada lista está emparejado, y así sucesivamente.

Python3




name> => [> 'Manjeet'> ,> 'Nikhil'> ,> 'Shambhavi'> ,> 'Astha'> ]> roll_no> => [> 4> ,> 1> ,> 3> ,> 2> ]> # using zip() to map values> mapped> => zip> (name, roll_no)> print> (> set> (mapped))>

Producción

{('Nikhil', 1), ('Shambhavi', 3), ('Manjeet', 4), ('Astha', 2)} 

Python zip() con enumerar

La combinación de zip() y enumerar() es útil en escenarios en los que desea procesar varias listas o tuplas en paralelo y también necesita acceder a sus índices para cualquier propósito específico.

Python3




names> => [> 'Mukesh'> ,> 'Roni'> ,> 'Chari'> ]> ages> => [> 24> ,> 50> ,> 18> ]> for> i, (name, age)> in> enumerate> (> zip> (names, ages)):> > print> (i, name, age)>

Producción

0 Mukesh 24 1 Roni 50 2 Chari 18 

Python zip() con diccionario

La función zip() en Python se utiliza para combinar dos o más iterables diccionarios en un único iterable, donde los elementos correspondientes del iterable de entrada se emparejan como tuplas. Cuando se usa zip() con diccionarios, empareja las claves y los valores de los diccionarios según su posición en el diccionario.

Python3




stocks> => [> 'GEEKS'> ,> 'For'> ,> 'geeks'> ]> prices> => [> 2175> ,> 1127> ,> 2750> ]> new_dict> => {stocks: prices> for> stocks,> > prices> in> zip> (stocks, prices)}> print> (new_dict)>

Producción

{'GEEKS': 2175, 'For': 1127, 'geeks': 2750} 

Python zip() con Tupla

Cuando se usa con tuplas, cremallera() funciona emparejando los elementos de tuplas según sus posiciones. El iterable resultante contiene tuplas donde la i-ésima tupla contiene el i-ésimo elemento de cada tupla de entrada.

Python3




tuple1> => (> 1> ,> 2> ,> 3> )> tuple2> => (> 'a'> ,> 'b'> ,> 'c'> )> zipped> => zip> (tuple1, tuple2)> result> => list> (zipped)> print> (result)>

Producción:

[(1, 'a'), (2, 'b'), (3, 'c')] 

Python zip() con múltiples iterables

La función zip() de Python también se puede utilizar para combinar más de dos iterables. Puede tomar múltiples iterables como entrada y devolver un iterable de tuplas, donde cada tupla contiene elementos de las posiciones correspondientes de los iterables de entrada.

Python3




list1> => [> 1> ,> 2> ,> 3> ]> list2> => [> 'a'> ,> 'b'> ,> 'c'> ]> list3> => [> 'x'> ,> 'y'> ,> 'z'> ]> zipped> => zip> (list1, list2, list3)> result> => list> (zipped)> print> (result)>

Producción

[(1, 'a', 'x'), (2, 'b', 'y'), (3, 'c', 'z')] 

Comprimir listas de tamaño desigual

La función zip() solo iterará sobre la lista más pequeña pasada. Si se dan listas de diferentes longitudes, la combinación resultante solo será tan larga como la lista más pequeña pasada. En el siguiente ejemplo de código:

Python3




# 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)>

Producción

Zipped result as a list: ('Chandler', 'Male', 35) ('Monica', 'Female', 36) ('Ross', 'Male', 38) ('Rachel', 'Female', 34) 

Descomprimir usando zip()

Descomprimir significa convertir los valores comprimidos nuevamente al yo individual tal como estaban. Esto se hace con la ayuda de * operador.

Python3




# 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)>

Producción

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) 

Usando zip() con Python Loops

Hay muchas aplicaciones posibles que se pueden ejecutar usando zip, ya sea base de datos de estudiantes o cuadro de mando o cualquier otra utilidad que requiera mapeo de grupos. A continuación se muestra un pequeño ejemplo de un cuadro de mando.

Python3




# 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))>

Producción

Player : Sachin Score : 100 Player : Sehwag Score : 15 Player : Gambhir Score : 17 Player : Dravid Score : 28 Player : Raina Score : 43