Introducción
Al igual que otros lenguajes de programación, los bucles for en Python son un poco diferentes, en el sentido de que funcionan más como un iterador y menos como una palabra clave for. En Python, no existe una sintaxis como C ( for(i=0; i<n; i++) ), sino que se utiliza for in n.
Se pueden utilizar para iterar sobre una secuencia de un list, string, tuple, set, array, data frame.
Dada una lista de elementos, se puede utilizar un bucle for para iterar sobre cada elemento de la lista y ejecutarlo.
Para iterar sobre una serie de elementos, los bucles «for» utilizan la función range. La función range devuelve una nueva lista con números de ese rango especificado en función de la longitud de la secuencia.
Al iterar sobre una secuencia, también puedes utilizar el índice de los elementos de la secuencia para iterar, pero la clave es calcular primero la longitud de la lista y luego iterar sobre la serie dentro del rango de esta longitud.
Los bucles for en Python están indexados desde cero.
Pasemos rápidamente a la parte de implementación.
¡También puedes ver este vídeo para obtener un tutorial rápido!
Empieza a aprender Python gratis
Introduction to Data Science in Python
Implementación de bucles
Para empezar, imprimamos números del 1 al 10. Dado que los bucles for en Python están indexados desde cero, tendrás que añadir uno en cada iteración; de lo contrario, se mostrarán valores del 0 al 9.
for i in range(10):
print (i+1)
# 1
# 2
# 3
# 4
# 5
# 6
# 7
# 8
# 9
# 10
Repitamos una cadena de una palabra Datacamp utilizando un bucle «for» y solo imprimamos la letra a.
for i in "Datacamp":
if i == 'a':
print (i)
# a
# a
# a
Supongamos que quieres definir una lista de elementos y recorrerlos uno por uno.
sequence = [1, 2, 8, 100, 200, 'datacamp', 'tutorial']
for i in sequence:
print (i)
# 1
# 2
# 8
# 100
# 200
# datacamp
# tutorial
Pero, ¿qué pasa si quieres averiguar la longitud de la lista y luego iterar sobre ella? Para ello, utilizarás la función integrada len y, a continuación, en la salida de longitud, aplicarás range.
Recuerda que la función range siempre espera un valor entero.
sequence = [1, 2, 8, 100, 200, 'datacamp', 'tutorial']
for i in range(len(sequence)):
print (sequence[i])
# 1
# 2
# 8
# 100
# 200
# datacamp
# tutorial
¡Genial! Pero, ¿por qué necesitas usar la función len cuando puedes usar directamente for i in numbers? La respuesta es sencilla. ¿Qué pasa si deseas modificar o trabajar con los índices de la secuencia, como cambiar el elemento de una lista existente? En ese caso, necesitarías range(len(sequence)).
sequence = [1, 2, 8, 100, 200, 'datacamp', 'tutorial']
for i in range(len(sequence)):
element = sequence[i]
if type(element) == int:
sequence[i] = element + 4
print(sequence)
# [5, 6, 12, 104, 204, 'datacamp', 'tutorial']
Genial, ¿verdad? Pudiste modificar los elementos de la lista en función de la condición if.
Ahora veamos cómo puedes imprimir los números impares entre 1 y 20. Para lograrlo, tendrás que definir tres cosas en la función range. El punto de inicio, el punto final y el valor de incremento (o pasos) con el que el bucle incrementará los números del 1 al 20.
for i in range(1,20,2):
print (i)
# 1
# 3
# 5
# 7
# 9
# 11
# 13
# 15
# 17
# 19
Bucle for anidado
for i in range(11):
for j in range(i):
print (i, end=' ')
print()
# 1
# 2 2
# 3 3 3
# 4 4 4 4
# 5 5 5 5 5
# 6 6 6 6 6 6
# 7 7 7 7 7 7 7
# 8 8 8 8 8 8 8 8
# 9 9 9 9 9 9 9 9 9
# 10 10 10 10 10 10 10 10 10 10
Bucle «for» para iterar sobre las filas y columnas de un marco de datos.
import pandas as pd
iris = pd.read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv')
iris.head()
| sepal_length | sepal_width | petal_length | petal_width | especies | |
|---|---|---|---|---|---|
| 0 | 5.1 | 3,5 | 1.4 | 0,2 | setosa |
| 1 | 4,9 | 3,0 | 1.4 | 0,2 | setosa |
| 2 | 4,7 | 3.2 | 1.3 | 0,2 | setosa |
| 3 | 4,6 | 3.1 | 1,5 | 0,2 | setosa |
| 4 | 5,0 | 3,6 | 1.4 | 0,2 | setosa |
len(iris)
# 150
for i in range(len(iris)):
Class = iris.iloc[i,4]
if Class == 'versicolor' and i < 70:
print (Class)
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
A continuación, sumemos dos a cada fila de columnas sepal_length,sepal_width, petal_length y petal_width.
columns = ['sepal_length','sepal_width','petal_length','petal_width']
for indices, row in iris.iterrows():
for column in columns:
iris.at[indices,column] = row[column] + 2
iris.head()
| sepal_length | sepal_width | petal_length | petal_width | especies | |
|---|---|---|---|---|---|
| 0 | 7.1 | 5,5 | 3.4 | 2.2 | setosa |
| 1 | 6,9 | 5,0 | 3.4 | 2.2 | setosa |
| 2 | 6,7 | 5.2 | 3.3 | 2.2 | setosa |
| 3 | 6.6 | 5.1 | 3,5 | 2.2 | setosa |
| 4 | 7,0 | 5.6 | 3.4 | 2.2 | setosa |
Iteración sobre una secuencia con la función Lambda
La función lambda de Python es rápida y potente en comparación con el bucle básico for. Se utiliza ampliamente, especialmente cuando se trabaja con DataFrame. Puedes procesar tus datos con la ayuda de la función Lambda con muy poco código. Aunque, a veces resulta difícil entenderlo.
x = [20, 30, 40, 50, 60]
y = []
for v in x :
y += [v * 5]
print(y)
# [100, 150, 200, 250, 300]
Ahora, probemos esto con una función lambda y una función map.
Map toma una función, por ejemplo, una función lambda y una secuencia x, y luego devuelve una nueva secuencia.
x = [20, 30, 40, 50, 60]
y = map(lambda x: x * 5,x)
print(y)
# <map object at 0x4063cc8>
Devuelve una función generadora y, para obtener el resultado del generador, pasas el resultado como argumento a list.
x = [20, 30, 40, 50, 60]
y = map(lambda x: x * 5,x)
print(list(y))
# [100, 150, 200, 250, 300]
Ahora, demos un paso atrás y analicemos tanto el bucle for como la combinación lambda/map(). Notarás que la diferencia entre ambos es la adición de map, lambda, y la eliminación de «for» e «in». Y además, en una sola línea, fuiste capaz de codificarlo.
Conclusión
Enhorabuena por haber completado este tutorial básico sobre el bucle «Bucle for» en Python.
Los bucles «Bucle for» son la columna vertebral de todos los lenguajes de programación y, en el caso de Python, no son nada difíciles de programar, ya que su funcionamiento es similar al de escribir una frase en inglés.
Si deseas obtener más información sobre los bucles for en Python, realiza el curso Python Data Science Toolbox (Parte 2) de DataCamp.
No dudes en plantear cualquier pregunta relacionada con este tutorial en la sección de comentarios que aparece a continuación.

