Bucle for con Python

Con la estructura de control for en Python podemos repetir la ejecución de nuestro código las veces que podamos iterar nuestro objeto iterable.

Las secuencias son objetos iterables en Python. Aunque no son los únicos. Existen algunos más: podemos iterar recorriendo diccionarios y conjuntos en Python.

Bucle for para secuencias

Hay que tener en cuenta que las secuencias en Python son las siguientes (las secuencias en Python):

  • Listas
  • Tuplas
  • Rangos
  • Cadenas de texto

Aparte de las secuencias también podemos iterar recorriendo diccionarios y conjuntos en Python.

Como con ejemplos se ve mucho más fácil, vamos a utilizar una cadena de texto.

Recorriendo con for un string en Python

Vamos a repetir el bloque de código tantas veces como letras haya en nuestra cadena Badajoz. En cada iteración, letra tomará el valor correspondiente a la letra siguiente.

cadena = 'Badajoz'
for letra in cadena:
    print(letra)

# B
# a
# d
# a
# j
# o
# z

Recorriendo con for un rango en Python

El siguiente ejemplo lo vamos a realizar con un rango. Recuerda que la secuencia rango se creaba de la siguiente forma:

un_rango = range(inicio, stop, paso)
mi_rango = range(0, 6, 2)
for i in mi_rango:
    print(i)

# 0
# 2
# 4

Si obviamos el inicio y el paso, estos serán 0 y 1 respectivamente. Los dos siguientes rangos son exactamente iguales.

mi_rango = range(0, 6, 1)
mi_rango = range(6)

Veamos un ejemplo para repetir un bloque de código 5 veces. En el bloque de código imprimiremos mediante la función f string el valor de i en cada iteración.

No estamos indicando ni el inicio ni el paso, por esta razón tomará por defecto 0 para el inicio y 1 para el paso. ¿Qué significa? Que empieza con valor 0 e itera de 1 en 1.

mi_rango = range(5)
for i in mi_rango:
    print(f'Valor de i: {i}')

# Valor de i: 0
# Valor de i: 1
# Valor de i: 2
# Valor de i: 3
# Valor de i: 4

Podemos indicarle que comience con el valor 1 y aumentarle 1 también al fin para que siga siendo un rango de cinco valores, pero que estos sean de los números 1 al 5.

mi_rango = range(1, 6)
for i in mi_rango:
    print(f'Valor de i: {i}')

# Valor de i: 1
# Valor de i: 2
# Valor de i: 3
# Valor de i: 4
# Valor de i: 5

Recorriendo con for una lista en Python

Las listas y las tupas se recorren de la misma forma. Veamos un ejemplo para recorrer una lista con un for en Python.

mi_lista = ['uno', 'dos', 'tres', 'cuatro', 'cinco']
for numero in mi_lista:
    print(numero, end=', ')

# uno, dos, tres, cuatro, cinco,

Recorriendo con for una tupla en Python

Ahora vamos a recorrer de la misma forma una tupla.

mi_tupla = (1, 2, 3, 4, 5)
for numero in mi_tupla:
    print(numero, end=', ')

# 1, 2, 3, 4, 5,

Recorriendo un diccionario en Python

Para recorrer un diccionario en Python, debemos tener en cuenta que los diccionarios se crean utilizando clave:valor.

mi_diccionario = {
    'clave1': 'valor1',
    'clave2': 2,
    'clave3': 3.3,
    'clave4': 'cuatro'    
}
for clave in mi_diccionario:
    print(clave, end=', ')

# clave1, clave2, clave3, clave4,

Si queremos iterar nuestro diccionario para imprimir los valores que existen en cada clave, lo haremos de la siguiente forma:

Puedes consultar la documentación oficial sobre diccionarios en Python.

mi_diccionario = {
    'clave1': 'valor1',
    'clave2': 2,
    'clave3': 3.3,
    'clave4': 'cuatro'    
}
for clave in mi_diccionario:
    print(mi_diccionario[clave])

# valor1
# 2
# 3.3
# cuatro

Existe una forma para indicar en la misma expresión del for que lo que buscamos son los valores con values().

mi_diccionario = {
    'clave1': 'valor1',
    'clave2': 2,
    'clave3': 3.3,
    'clave4': 'cuatro'    
}
for valor in mi_diccionario.values():
    print(valor)

# valor1
# 2
# 3.3
# cuatro

De la misma forma podríamos indicar que lo único que necesitamos son las claves mediante keys().

for claves in mi_diccionario.keys():

Recorriendo un conjunto set con Python

En este ejemplo vamos a recorrer con un for de Python un conjunto set.

un_set = {1, 1, 1, 3, 4, 5, 6, 7}
for unidad in un_set:
    print(unidad, end=' ☺ ')

# 1 ☺ 3 ☺ 4 ☺ 5 ☺ 6 ☺ 7 ☺

Break para bucles for

La sentencia break en Python sirve para detener nuestro bucle for de forma inmediata.

En este ejemplo podemos ver que solo se imprime una parte de nuestro objeto iterable. Una vez que llegamos a la instrucción break, salimos del bucle for de forma inmediata.

un_set = {1, 1, 1, 3, 4, 5, 6, 7}
for unidad in un_set:
    print(unidad, end=' ☺ ')
    break

# 1 ☺

Else en el for con Python

La estructura for de Python permite ejecutar un bloque de código cuando se termine de recorrer el objeto iterable.

for letra in 'palabra':
    print(letra)
else:
    print('No hay más letras')

# p
# a
# l
# a
# b
# r
# a
# No hay más letras

Iterables en Python

Para ver si un objeto es iterable o no y poder recorrerlo mediante la estructura for de Python, podemos hacer algunas comprobaciones.

numero = 6
verifica = iter(numero)

# TypeError: 'int' object is not iterable

Ahora realizamos la prueba con una lista que es un objeto que sí es iterable.

lista = ['perro', 'gato', 'rana', 'león']
verifica = iter(lista)
print(verifica)
# <list_iterator object at 0x104c77670>

print(type(verifica))
# <class 'list_iterator'>

Dejar un comentario

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