In questa quinta parte del corso relativo a Python andremo a vedere il ciclo for. Tramite il  for loop possiamo far eseguire lo stesso blocco di codice ad ogni elemento presente nell'oggetto iterabile che vogliamo, creando appunto un ciclo.

Se non ti è chiaro cosa siano un iteratore e un iterabile, ti invito a scoprirlo in questa pagina.

Sintassi

Un for loop può essere implementato nel seguente modo:

for <variabile> in <iterabile>:
<blocco di codice>

Possiamo vederlo quindi come "per ogni elemento nella sequenza fai questo".

Per chiarirti meglio le idee, prendiamo come esempio una lista di stringhe come oggetto iterabile:

lista_stringhe = ["ciao", "pythonpertutti", "tutorial for loop"]
for stringa in lista_stringhe:
print(stringa)

#output
"ciao"
"pythonpertutti"
"tutorial for loop"

Puoi notare quindi che ogni elemento presente in questa lista eseguirà quel blocco di codice(in questo caso semplicemente stamperà a schermo il valore di ogni stringa).

Metodo range()

Una funzione built-in molto comoda se si vuole eseguire un for loop per un determinato numero di volte, è range(start, stop, [ step]).

Questo metodo infatti, passandogli come parametri un intervallo di numeri interi(start e stop), restituisce un oggetto di tipo range iterabile contenente tutti i numeri compresi nell'intervallo definito.

for i in range(1, 50):
if i % 2 == 0:
print(i)

#output numeri pari in un intervallo da 1 a 50
2
4
6
..
..
48

Il parametro [ step], invece, è opzionale e specifica la distanza tra un numero e il successivo. Se omesso, il valore di default è 1:

for i in range(1, 10, 2):
print(i)

#output
1
3
5
7
9

Utilizzare le liste con i for loop

Una pratica molto comune è quella di operare sulle liste utilizzando i for loop in quanto ci permette di accedere in modo sequenziale ad ogni suo elemento, o di aggiungerne di nuovi.

Riprendiamo l'esempio precedente che stampa i numeri pari di un certo intervallo, in questo caso però invece che visualizzarli solamente a schermo, li inseriamo in una lista:

numeri_pari = []
for i in range(1, 10):
if(i % 2 == 0):
numeri_pari.append(i)

print(numeri_pari)
#output
[2, 4, 6, 8]

Un altro modo di ottenere lo stesso risultato, in casi semplici come questo, è quello di ricorrere alla list comprehension:

numeri_pari = [i for i in range(1, 10) if i % 2 == 0]

print(numeri_pari)
#output
[2, 4, 6, 8]

Se vuoi saperne si più sulla list comprehension, ho dedicato una pagina apposta qui.

Break e Continue

Le istruzioni break e continue ci permettono di alterare il flusso del nostro loop, terminandolo, o semplicemente saltando l'iterazione corrente.

Mettiamo caso che vogliamo ottenere la somma di tutti i numeri positivi di una lista:

numeri = [4, 2, 4, 1, -4, 2]
somma = 0
for numero in numeri:
if numero < 0:
continue
somma += numero

print(somma)
#output
13

L'istruzione continue, in questo esempio quindi, nel caso il numero sia negativo, ci permette di saltare subito al prossimo numero ignorando la somma.

Il break invece, ci permette appunto di interrompere completamente il nostro ciclo. Supponiamo di volere sommare i numeri di una lista, ma sta volta vogliamo uscire dal loop quando la somma è maggiore o uguale a 150:

numeri_da_sommare = [20, 30, 50, 50, 10, 40, 70]
somma = 0
for i in numeri_da_sommare:
if somma >= 150:
break
somma += i

print(somma)
#output
150

Come vedi viene effettuata la somma solo fino al 4 elemento della lista, dopodichè viene eseguito il break e il for viene interrotto.

For loop annidati

Come per le liste è possibile annidare anche i for loop semplicemente definendoli in cascata uno sotto l'altro:

for i in [1, 2, 3]:
print("Ciclo esterno ", i)
for j in [10, 20, 30]:
print("Cliclo annidato ", j)

#output
Ciclo esterno 1
Cliclo annidato 10
Cliclo annidato 20
Cliclo annidato 30
Ciclo esterno 2
Cliclo annidato 10
Cliclo annidato 20
Cliclo annidato 30
Ciclo esterno 3
Cliclo annidato 10
Cliclo annidato 20
Cliclo annidato 30

Condividi sui Social