Python | Iterar sobre múltiples listas simultáneamente

Iterar sobre listas individuales se refiere al uso de bucles for para la iteración sobre un solo elemento de una sola lista en un paso particular, mientras que al iterar sobre varias listas simultáneamente, nos referimos al uso de bucles for para la iteración sobre un solo elemento de varias listas en un paso particular. .

Iterar sobre varias listas a la vez

Para una mejor comprensión de la iteración de múltiples listas, iteramos sobre 3 listas a la vez.

Podemos iterar sobre listas simultáneamente de maneras:

  1. zip() : en Python 3, zip devuelve un iterador. La función zip() se detiene cuando cualquiera de la lista de todas las listas se agota. En palabras simples, se ejecuta hasta la más pequeña de todas las listas.

    A continuación se muestra una implementación de la función zip e itertools.izip que itera sobre 3 listas:

    Python3

    # Python program to iterate
    # over 3 lists using zip function
      
    import itertools 
      
    num = [1, 2, 3]
    color = ['red', 'while', 'black']
    value = [255, 256]
      
    # iterates over 3 lists and executes 
    # 2 times as len(value)= 2 which is the
    # minimum among all the three 
    for (a, b, c) in zip(num, color, value):
         print (a, b, c)
    Producción:

    1 red 255
    2 while 256
    
  2. itertools.zip_longest() : zip_longest se detiene cuando se agotan todas las listas. Cuando se agotan los iteradores más cortos, zip_longest genera una tupla con valor Ninguno.

    A continuación se muestra una implementación de itertools.zip_longest que itera sobre 3 listas:

    Python3

    # Python program to iterate
    # over 3 lists using itertools.zip_longest
      
    import itertools 
      
    num = [1, 2, 3]
    color = ['red', 'while', 'black']
    value = [255, 256]
      
    # iterates over 3 lists and till all are exhausted
    for (a, b, c) in itertools.zip_longest(num, color, value):
        print (a, b, c)
    Producción:

    1 red 255
    2 while 256
    3 black None
    

    Producción:

    1 red 255
    2 while 256
    3 black None
    

También podemos especificar un valor predeterminado en lugar de Ninguno en zip_longest()

Python3

# Python program to iterate
# over 3 lists using itertools.zip_longest
  
import itertools 
  
num = [1, 2, 3]
color = ['red', 'while', 'black']
value = [255, 256]
  
# Specifying default value as -1
for (a, b, c) in itertools.zip_longest(num, color, value, fillvalue=-1):
    print (a, b, c)
Producción:

1 red 255
2 while 256
3 black -1


Nota:
Python 2.x tenía dos funciones adicionales izip() e izip_longest(). En Python 2.x, zip() y zip_longest() se usaban para devolver la lista, y izip() e izip_longest() se usaban para devolver el iterador. En Python 3.x, izip() e izip_longest() no están allí como iterador de retorno zip() y zip_longest().

Publicación traducida automáticamente

Artículo escrito por Striver y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *