for en Python – El bucle for en Python: estructura y ejemplos

Tutorial Python - El bucle for en Python

Una de las principales tareas a la hora de aprender un nuevo lenguaje de programación es conocer las estructuras de control que ofrece el propio lenguaje. El bucle for en Python es una de las estructuras que más utilizarás en tus programas.

A continuación veremos por qué el bucle for en Python es importante, cuándo usarlo y cómo.

Índice

El bucle for en python

El bucle for se utiliza para recorrer los elementos de un objeto iterable (lista, tupla, conjunto, diccionario, …) y ejecutar un bloque de código. En cada paso de la iteración se tiene en cuenta a un único elemento del objeto iterable, sobre el cuál se pueden aplicar una serie de operaciones.

Su sintaxis es la siguiente:

for <elem> in <iterable>:
    <Tu código>

Aquí, elem es la variable que toma el valor del elemento dentro del iterador en cada paso del bucle. Este finaliza su ejecución cuando se recorren todos los elementos.

Como te indicaba, es muy frecuente usar el bucle for para iterar sobre los elementos de listas, tuplas o diccionarios.

Ejemplo de cómo usar el bucle for

Imaginemos que tenemos una lista de números y queremos mostrarlos por consola. El código podría ser así:

nums = [4, 78, 9, 84]
for n in nums:
    print(n)

4
78
9
84

Qué es un iterable

Veamos con más detalle el concepto de iterable mencionado en el apartado anterior. Un iterable es un objeto que se puede iterar sobre él, es decir, que permite recorrer sus elementos uno a uno. Para ser más técnico, un objeto iterable es aquél que puede pasarse como parámetro de la función iter().

Esta función devuelve un iterador basado en el objeto iterable que se pasa como parámetro.

Finalmente, un iterador es un objeto que define un mecanismo para recorrer los elementos del iterable asociado.

Te lo enseño mejor con un ejemplo:

>>> nums = [4, 78, 9, 84]
>>> it = iter(nums)
>>> next(it)
4
>>> next(it)
78
>>> next(it)
9
>>> next(it)
84
>>> next(it)
Traceback (most recent call last):
File "<input>", line 1, in <module>
StopIteration

Como puedes observar, un iterador recorre los elementos de un iterable solo hacia delante. Cada vez que se llama a la función next() se recupera el siguiente valor del iterador.

En Python, los tipos principales list, tuple, dict, set o string entre otros, son iterables, por lo que podrán ser usados en el bucle for.

Bucle for en diccionarios

Un caso es especial de bucle for se da al recorrer los elementos de un diccionario. Dado que un diccionario está compuesto por pares clave/valor, hay distintas formas de iterar sobre ellas.

1 – Recorrer las claves del diccionario.

valores = {'A': 4, 'E': 3, 'I': 1, 'O': 0}
for k in valores:
    print(k)

A
E
I
O

2 – Iterar sobre los valores del diccionario

valores = {'A': 4, 'E': 3, 'I': 1, 'O': 0}
for v in valores.values():
    print(v)

4
3
1
0

3 – Iterar a la vez sobre la clave y el valor de cada uno de los elementos del diccionario.

valores = {'A': 4, 'E': 3, 'I': 1, 'O': 0}
for k, v in valores.items():
    print('k=', k, ', v=', v)

k=A, v=4
k=E, v=3
k=I, v=1
k=O, v=0

Python for y la clase range

¿Cómo implementamos y/o simulamos en Python el bucle for basado en una secuencia numérica? Para estos casos, Python pone a nuestra disposición la clase range (en Python 2 era una función). El constructor de esta clase, range(max), devuelve un iterable cuyos valores van desde 0 hasta max - 1.

for i in range(11):
    print(i)

0
1
2
3
...
10

El tipo de datos range se puede invocar con uno, dos e incluso tres parámetros:

  • range(max): Un iterable de números enteros consecutivos que empieza en 0 y acaba en max - 1
  • range(min, max): Un iterable de números enteros consecutivos que empieza en min y acaba en max - 1
  • range(min, max, step): Un iterable de números enteros consecutivos que empieza en min acaba en max - 1 y los valores se van incrementando de step en step. Este último caso simula el bucle for con variable de control.

Por ejemplo, para mostrar por pantalla los números pares del 0 al 10 podríamos usar la función range del siguiente modo:

for num in range(0, 11, 2):
    print(num)

0
2
4
6
8
10

for _ in <iterable>

En ocasiones, es posible que el elemento actual del iterable que se está recorriendo sea irrelevante. En estos casos puedes usar la variable _ para indicar esta situación. No obstante, yo no te lo recomiendo ya que también se suele usar en librerías de traducciones de texto. Aún así, te muestro un caso de uso. Imagínate que queremos implementar una función que devuelva la longitud de una lista. El código podría ser como el que te muestro a continuación:

def longitud(mi_lista):
    cont = 0
    for _ in mi_lista:
        cont += 1
    return cont

Modificando la iteración del bucle for: break y continue

Por último, vamos a ver que es posible alterar la iteración de un bucle for en Python. Para ello, nos valdremos de las sentencias break y continue. Pero, ¿qué hacen estas sentencias?

  • break se utiliza para finalizar y salir el bucle, por ejemplo, si se cumple alguna condición.
  • Por su parte, continue salta al siguiente paso de la iteración, ignorando todas las sentencias que le siguen y que forman parte del bucle.

Un ejemplo es la mejor manera de entenderlo.

Uso de break. Encontrar un elemento en una colección

coleccion = [2, 4, 5, 7, 8, 9, 3, 4]
for e in coleccion:
    if e == 7:
        break
    print(e)

El código anterior mostrará los números 2, 4 y 5.

Uso de continue. Imprimir solo los números pares de una colección

coleccion = [2, 4, 5, 7, 8, 9, 3, 4]
for e in coleccion:
    if e % 2 != 0:
        continue
    print(e)

En este caso, el código anterior mostrará los números 2, 4, 8 y 4.

for … else

En relación al apartado anterior, Python ofrece una estructura adicional de bucle for cuya estructura es la siguiente:

for e in iterable:
    # Tu código aquí
else:
    # Este código siempre se ejecuta si no
    # se ejecutó la sentencia break en el bloque for

Es decir, el código del bloque else se ejecutará siempre y cuando no se haya ejecutado la sentencia break dentro del bloque del for.
Veamos un ejemplo:

numeros = [1, 2, 4, 3, 5, 8, 6]

for n in numeros:
    if n == 3:
        break
else:
    print('No se encontró el número 3')

Como en el ejemplo anterior la secuencia numeros contiene al número 3, la instrucción print nunca se ejecutará.

Conclusión

En este tutorial hemos repasado los aspectos más importantes del bucle for en Python. Esta estructura de control es clave para trabajar colecciones.

También hemos visto el concepto de iterable e iterador en Python. Son los objetos en los que se basa la operativa del bucle for.

Por último, se ha explicado cómo simular en Python un bucle for basado en rango numérico y variable de control y cómo alterar la iteración con las sentencias break y continue.

 

¿Quieres ser expert@ en Python? Recibe trucos Python y las últimas novedades del blog

¡Eyyy! Esto también te puede interesar 👇

* Te informo de que los datos de carácter personal que proporciones al comentar serán tratados por Juan José Lozano Gómez como responsable de esta web. La Finalidad es moderar los comentarios. La Legitimación es gracias a tu consentimiento. Destinatarios: tus datos se encuentran alojados en Disqus (disqus.com), mi sistema de comentarios, que está acogido al acuerdo de seguridad EU-US Privacy. Podrás ejercer Tus Derechos de Acceso, Rectificación, Limitación o Suprimir tus datos enviando un email a juanjo@j2logo.com. Encontrarás más información en la POLÍTICA DE PRIVACIDAD.

Sobre j2logo

j2logo profile

Quiero ayudarte a que seas mejor programador/a, pero no uno cualquiera, sino uno de los top.

¿Quieres ser expert@ en Python? 🐍

❤️ He ayudado a miles de programadores/as como tú a ser mejores Pythonistas

📩 Recibe de vez en cuando trucos y scripts Python y las últimas novedades del blog

* Al enviar el formulario confirmas que aceptas la POLITICA DE PRIVACIDAD

¿Quieres ser expert@ en PYTHON?

j2logo-pythonistas

❤️ He ayudado a miles de programadores/as como tú

📩 Recibe trucos, scripts y las novedades del blog

¿Quieres dominar Python?

Python, Guía para ser un Pythonista

El curso con el que aprender el lenguaje desde cero. Con mi soporte y ayuda.

OFERTA BLACK FRIDAY

35% de descuento