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:
- 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
- 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)
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().