Lista como iterable
Colecciones de datos
Ya hemos tenido ocasión de comprobar la utilidad que tiene el uso de un array como iterable en la automatización de procedimientos cuando trabajamos con OOo Basic. Uno de esos iterables en Python son las listas, de ahí el interés por saber iterar por ellas. De hecho la iteración se presenta en Python más sencilla y a la vez más variada en cuanto procedimiento. Y también más potente. Trataremos en esta entrada sobre las diferentes formar de iterar por una lista... y algo más.
Partiendo de la estructura for, la forma más sencilla de iterar es tomar como referente el elemento y como iterable la lista. Así, dada una lista, vg. los curso de E. Primaria cursos = ['P1','P2','P3','P4','P5','P6'] podemos recorrer la lista del siguiente modo:
for curso in cursos:
print(curso)
Otra forma de iterar es obtener el número de elementos de la lista mediante la función >len() y usar la variable asociada (o la misma expresión) como límite superior del recorrido a realizar (1):
n = len(cursos)
for i in range (n):
print(cursos[i])
En ocasiones nos puede venir bien recuperar a la vez el dato y el índice que, como elemento, ocupa en la lista. Para estos casos disponemos de un método específico:
for index, curso in enumerate (cursos):
print(index, curso)
Otra situación especial, que no podemos contemplar como específica en OOo Basic aunque podemos simularla de otro modo, es cuando disponemos de dos o más listas y deseamos iterar por ambas, simultaneándolas:
cursos = ['P1','P2','P3','P4','P5','P6']
intervalos = ['2000/2001','2001/2002','2002/2003','2003/2004','2005/2006','2006/2007']
for curso, intervalo in zip(cursos, intervalos):
print(intervalo, curso)
Finalmente también podemos iterar secuencialmente (2) por dos o más listas. Para ello primero importamos el módulo itertools y después usamos el método itertools.chain(), como vemos en este ejemplo:
import itertools
for item in itertools.chain(cursos, intervalos):
print(item)
1 Obsérvese el modo diferente en que construimos la expresión de escritura en los dos métodos anteriores: en el primero es el referente (contador, si se prefiere, aunque en este caso no es esa su función principal) el que usamos como contenedor del dato
print(curso) pero en el segundo identificamos directamente el elemento de la lista mediante su índice, siendo éste el valor actual del contador print(cursos[i]). Como recordarás, este segundo método se asemeja más al modo en que trabajamos en OOo Basic
2 Secuencialmente se opone aquí a simultaneo, lo que implica que
zip() se opone a itertools.chain(). zip() es una de las funciones built-in que puedes consultar en esta entrada.
No hay comentarios:
Publicar un comentario
Comenta esta entrada