#11 Iteradores en Python

hace 3 años · Actualizado hace 2 años

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors

Los iteradores son una herramienta que pone Python a nuestra disposición para poder acceder de una manera más cómoda a los datos que tenemos almacenados en diferentes estructuras de datos iterables.

Para que te quede más claro, vamos a ir viendo parte por parte como funcionan y casos de uso para los diferentes tipos de datos que hay.

Entrar al curso completo de Python desde cero a experto

Índice
  1. ¿Qué es un iterador en Python?
  2. Elementos iterables en Python
    1. Como iterar listas en Python
    2. Como iterar cadenas en Python
    3. Como iterar conjuntos en Python
    4. Como iterar diccionarios en Python

¿Qué es un iterador en Python?

Un iterador en Python es un objeto que almacena una estructura de datos. Diferentes llamadas a la función next() con el elemento iterable como parámetro, nos devuelve el siguiente elemento por leer, empezando en la posición 0 y devolviendo el error StopIteration cuando llega al final.

El objetivo de utilizar iteradores en Python en lugar de las operaciones necesarias para interactuar con los diferentes elementos que hay dentro de las estructuras es principalmente para favorecer la lectura y escritura de código. De esta forma, tendremos un código o programa mucho más legible.

Elementos iterables en Python

Ahora bien, hay diferentes elementos que son iterables en Python, y aunque suelen iterarse de la misma manera, voy a hablarte de todos ellos con ejemplos para que comprendas mejor como funcionan.

Como iterar listas en Python

Como ya sabrás, las listas son un tipo de dato en python muy utilizado y aunque puede iterarse de otras maneras, como podría ser usando un bucle for, para algunos casos será totalmente necesario hacer uso de los iteradores. Para ello, primero debemos convertir la lista a un elemento iterable, usando la función iter().

>>> lista = iter([1,2,3,4,5])
>>> next(lista)
1
>>> next(lista)
2
>>> next(lista)
3
>>> next(lista)
4
>>> next(lista)
5
>>> next(lista)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration
>>> 
>>> lista = iter([1,2,3,4,5])
>>> lista.__next__()
1
>>> lista.__next__()
2
>>> lista.__next__()
3
>>> lista.__next__()
4
>>> lista.__next__()
5
>>> lista.__next__()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration
>>> 

Si lo que quieres es recorrer el conjunto de datos de forma inversa, debes hacer lo mismo que en el ejemplo anterior pero sustituyendo la sentencia iter([1,2,3,4,5]) por reversed([1,2,3,4,5]), de forma que genera el elemento iterable inverso.

Como iterar cadenas en Python

Las cadenas o String hacen referencia al texto escrito y en Python se suelen manejar de forma similar a las listas. Por eso, al iterar una cadena tendremos unos resultados similares a los de iterar una lista, siendo cada elemento un caracter de la cadena.

>>> cadena = iter("Hola Mundo")
>>> next(cadena)
'H'
>>> next(cadena)
'o'
>>> next(cadena)
'l'
>>> next(cadena)
'a'
>>> next(cadena)
' '
>>> next(cadena)
'M'
>>> next(cadena)
'u'
>>> next(cadena)
'n'
>>> next(cadena)
'd'
>>> next(cadena)
'o'
>>> next(cadena)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration
>>>

Como iterar conjuntos en Python

Un conjunto es un tipo de dato similar a las listas pero con la particularidad de que no puede haber elementos repetidos. Dicho eso, los iteradores en los conjuntos funcionan exactamente igual que en las listas:

>>> conjunto = iter(set([1,2,3,4,5]))
>>> next(conjunto)
1
>>> next(conjunto)
2
>>> next(conjunto)
3
>>> next(conjunto)
4
>>> next(conjunto)
5
>>> next(conjunto)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration

Como iterar diccionarios en Python

Los diccionarios son un tipo de dato estructurado, es decir, más complejo. Por eso, tenemos varias maneras de acceder a los datos de un diccionario en Python. Primero, debes saber que los diccionarios están compuestos por pares de clave y valor y por defecto accederemos a las claves del diccionario, aunque podemos especificar si queremos explícitamente acceder a las claves o a los valores de forma separada:

>>> diccionario = dict(uno=1, dos=2, tres=3)
>>> clave_default = iter(diccionario)
>>> next(clave_default)
'uno'
>>> next(clave_default)
'dos'
>>> next(clave_default)
'tres'
>>> next(clave_default)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration
>>>  
>>> diccionario = dict(uno=1, dos=2, tres=3)
>>> valor = iter(diccionario.items())
>>> next(valor)
('uno', 1)
>>> next(valor)
('dos', 2)
>>> next(valor)
('tres', 3)
>>> next(valor)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration
>>>  
>>> diccionario = dict(uno=1, dos=2, tres=3)
>>> valor = iter(diccionario.values())
>>> next(valor)
1
>>> next(valor)
2
>>> next(valor)
3
>>> next(valor)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration
>>> 

También te puede interesar:

Pionera del caos

Otras Entradas Relacionadas

Deja una respuesta

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



Para continuar es necesario que confirmes la política de privacidad de la web.

Subir