Como alternativa solo tenemos el if
a = 3
if a > 3:
print('mayor que 3')
elif a<2:
print('menor que 2')
else:
print('entre 2 y 3')
entre 2 y 3
Para bucles tenemos el for, que itera sobre cualquier tipo que sea una secuencia
for i in range(5):
print(i)
0 1 2 3 4
a = ['pepe', 3.14, 1, 2, (1,2)]
for i in a:
print(i)
pepe 3.14 1 2 (1, 2)
Ciertas funciones nos permiten hacer cosas interesantes sobre las listas, por ejemplo generar una lista de pares con las posiciones y valores de la secuencia (enumerate) o fusionar listas para recorrerlas a la vez (zip)
for i,j in enumerate(a):
print (i,'-', j)
print
for i,j,k in zip(range(5), range(5,10), range(0,10,2)):
print (i,j,k)
0 - pepe 1 - 3.14 2 - 1 3 - 2 4 - (1, 2) 0 5 0 1 6 2 2 7 4 3 8 6 4 9 8
Podemos recorrer cualquier estructura iterable
a = {'pepe': 3, 'juan': 2, 'maria': 1}
for i in a:
print (a[i])
3 2 1
Podemos usar funciones de los tipos para poder hacer los recorridos
for i in a.keys():
print (a[i])
3 2 1
Y manipularlas para poder realizar el recorrido como queramos, por ejemplo los diccionarios no ordenan sus claves, pero podemos ordenarlas nosotros para hacer el recorrido
for i in sorted(a.keys()):
print (a[i])
2 1 3
Aparte del for tenemos tambien el while
a = 0
while a < 5:
a += 1
print (a)
1 2 3 4 5
El for tambien se puede usar para generar listas (en python se llama list comprehensions) y suele ser mas eficiente que usar directamente un bucle
a = [i**2 for i in range(2,10,2)]
a
[4, 16, 36, 64]
Podemos utilizar otras sentencias para modificar el resultado
a = [i**2 for i in range(2,10) if i % 2 == 0]
a
[4, 16, 36, 64]
También las podemos anidar
a = [(i,j) for i in range(3) for j in range(3)]
a
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]