El bucle for en Python. Qué es, cuándo usarlo y cómo

bucle for python
Share on facebook
Share on twitter
Share on linkedin

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. Python pone a nuestra disposición varias de ellas, siendo una de las más utilizadas el bucle for.

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

Tipos de bucle for

El bucle for es un gran conocido en muchos lenguajes de programación. Principalmente, se utiliza para realizar alguna acción sobre cada uno de los elementos de una colección. En función del lenguaje, la manera de usar el bucle for es diferente. Por ejemplo, se suele usar con un rango numérico, con una variable de control o iterando sobre los elementos de una colección:

Bucle for con un rango numérico

for i=0 to i=10
    <Tu código aquí>

En este caso, el valor de la variable i se va incrementando de 1 en 1 en cada paso de la iteración desde 0 hasta 10.

Bucle for con una variable de control

for (i=0; i <=10; i++)
    <Tu código aquí>

Este tipo de bucle for define el valor inicial de la variable de control i=0, la condición para que se siga ejecutando el bucle i<=10 y cómo se actualiza la variable de control en cada iteración i++. Digamos que este bucle for se leería del siguiente modo: «Inicializa la variable i a 0. Mientras que i sea menor o igual que 10 ejecuta <Tu código aquí>. Por último, incrementa i en uno».

Por tanto, se podría traducir en el siguiente bucle while:

i=0
while (i <= 10)
    <Tu código aquí>
    i++

Bucle for sobre colecciones

for elemento in coleccion
    <Tu código aquí>

En este caso, en el bucle for se va iterando sobre los distintos elementos de una colección. El bucle finaliza cuando se han recorrido todos los elementos de la misma.

El bucle for en python

En Python el bucle for es del tercer tipo explicado en el apartado anterior. Es decir, Python solo implementa el bucle for basado en objetos iterables y su sintaxis es la siguiente:

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

Veámoslo con un ejemplo de verdad. 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)

Tan solo nos queda por definir qué es el parámetro <iterable>, aquél que viene después de la palabra reservada in.

Iterando sobre iteradores

Un iterable es un objeto que se puede iterar sobre él. 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.

Vaya lío 😂 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, las distintas formas de iterar sobre ellos son:

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

En este caso se recorren las claves del diccionario.

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

Aquí lo que se itera es sobre los valores de cada clave del diccionario.

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

En este último caso, iteramos a la vez sobre la clave y el valor de cada uno de los elementos del diccionario.

La clase range

¿Cómo implementamos y/o simulamos en Python el bucle for basado en un rango numérico? 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.

La manera de simular en Python el siguiente bucle for basado en rango

for i=0 to i=10
    print(i)

sería así:

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

El tipo de datos range se puede invocar con uno, dos e incluso tres parámetros. Veamos qué devuelve en cada caso:

  • 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.

Veámoslo más claro con un 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)

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.

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.

¿Me ayudas a compartir el post? 🤗🤟🏻

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn

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

Últimos posts

¿Quieres ser un auténtico Pythonista? 🐍

Recibe de vez en cuando trucos, scripts y tutoriales Python en español para dominar el lenguaje. No es SPAM. Date de baja cuando quieras.

* Te informo de que los datos de carácter personal que proporciones serán tratados por Juan José Lozano Gómez como responsable de esta web. La Finalidad es el envío de trucos, scripts, mis publicaciones así como correos comerciales. La Legitimación es gracias a tu consentimiento. Destinatarios: tus datos se encuentran alojados en mi plataforma de email marketing MailRelay que garantiza las medidas de seguridad encaminadas a proteger la privacidad. 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 POLITICA DE PRIVACIDAD

Tutoriales Python en español

👉🏻 🐍 Tutoriales Python. ¿Por qué Python?