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