Vai al contenuto principale

Ciclo for in Python: tutorial

Impara a implementare i cicli for in Python per iterare su una sequenza o sulle righe e colonne di un dataframe pandas.
Aggiornato 29 set 2026  · 5 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

Introduzione

Come in altri linguaggi di programmazione, i cicli for in Python sono un po' diversi nel senso che funzionano più come un iteratore e meno come una semplice parola chiave for. In Python non esiste una sintassi in stile C come for(i=0; i<n; i++), ma si usa for in n.

Possono essere usati per iterare su una sequenza come una list, una string, una tuple, un set, un array, un data frame.

Data una lista di elementi, il ciclo for può essere usato per iterare su ogni elemento di quella lista ed eseguirlo.

Per iterare su una serie di elementi, i cicli for usano la funzione range. La funzione range restituisce una nuova lista con numeri dell’intervallo specificato in base alla lunghezza della sequenza.

Durante l’iterazione su una sequenza puoi anche usare l’indice degli elementi per iterare, ma la cosa fondamentale è prima calcolare la lunghezza della lista e poi iterare sulla serie entro l’intervallo di tale lunghezza.

I cicli for in Python sono indicizzati a partire da zero.

Passiamo subito alla parte di implementazione.

Puoi anche guardare questo video per un tutorial rapido!

Inizia a imparare Python gratis

Python - Livello Intermedio

BasicSkill Level
4 ore
1.4M learners
Migliora le tue competenze nella scienza dei dati creando visualizzazioni con Matplotlib e manipolando DataFrames con pandas.
See DetailsRight Arrow
Start Course

Implementare i cicli

Per iniziare, stampiamo i numeri da 1 a 10. Poiché i cicli for in Python sono indicizzati da zero, dovrai aggiungere uno a ogni iterazione; altrimenti stamperà valori da 0 a 9.

for i in range(10):
    print (i+1)

# 1
# 2
# 3
# 4
# 5
# 6
# 7
# 8
# 9
# 10

Iteriamo ora su una stringa con la parola Datacamp usando un ciclo for e stampiamo solo la lettera a.

for i in "Datacamp":
    if i == 'a':
        print (i)

# a
# a
# a

Supponiamo che tu voglia definire una lista di elementi e iterare su quegli elementi uno per uno.

sequence = [1, 2, 8, 100, 200, 'datacamp', 'tutorial']
for i in sequence:
    print (i)

# 1
# 2
# 8
# 100
# 200
# datacamp
# tutorial

Ma se vuoi prima trovare la lunghezza della lista e poi iterare su di essa? Userai la funzione integrata len e poi applicherai range al risultato della lunghezza.

Ricorda, range si aspetta sempre un valore intero.

sequence = [1, 2, 8, 100, 200, 'datacamp', 'tutorial']
for i in range(len(sequence)):
    print (sequence[i])

# 1
# 2
# 8
# 100
# 200
# datacamp
# tutorial

Ottimo! Ma perché dovresti usare la funzione len quando puoi usare direttamente for i in numbers? La risposta è semplice. Se vuoi modificare o lavorare con gli indici della sequenza, ad esempio cambiando un elemento di una lista esistente, allora ti serve 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']

Figo, vero? Sei riuscito a modificare gli elementi della lista in base alla condizione if.

Vediamo ora come stampare i numeri dispari tra 1 e 20. Per farlo, dovrai definire tre cose nella funzione range: il punto di partenza, il punto di arrivo e il valore di incremento (o step) con cui il ciclo avanzerà sui numeri da 1 a 20.

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

# 1
# 3
# 5
# 7
# 9
# 11
# 13
# 15
# 17
# 19

Ciclo for annidato

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 

Ciclo for per iterare su righe e colonne di un dataframe

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 species
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

Successivamente, aggiungiamo due a ogni riga delle colonne sepal_length,sepal_width, petal_length e 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 species
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

Iterare su una sequenza con la funzione Lambda

La funzione lambda di Python è veloce e potente rispetto al semplice ciclo for. È ampiamente usata, soprattutto quando si lavora con i DataFrame. Puoi elaborare i tuoi dati con l’aiuto della funzione Lambda con pochissimo codice. Anche se, a volte, può risultare difficile da capire.

x = [20, 30, 40, 50, 60]
y = []

for v in x :
    y += [v * 5]

print(y)

# [100, 150, 200, 250, 300]

Ora proviamo con una lambda e la funzione map.

Map accetta in input una funzione, ad esempio una funzione lambda, e una sequenza x e poi restituisce una nuova sequenza.

x = [20, 30, 40, 50, 60]
y = map(lambda x: x * 5,x)

print(y)

# <map object at 0x4063cc8>

Restituisce un generatore e, per ottenere l’output dal generatore, passi il risultato come argomento a list.

x = [20, 30, 40, 50, 60]
y = map(lambda x: x * 5,x)

print(list(y))

# [100, 150, 200, 250, 300]

Ora facciamo un passo indietro e guardiamo sia il metodo con il ciclo for sia la combinazione lambda/map(). Noterai che la differenza tra i due sta nell’aggiunta di map, lambda e nella rimozione di "for" e "in". E, inoltre, sei riuscito a scrivere tutto in una sola riga.

Conclusione

Complimenti per aver completato questo tutorial base sui cicli for in Python.

I cicli for sono la spina dorsale di ogni linguaggio di programmazione e, in Python, usarli non è per niente difficile da codificare: sono simili, nello spirito, a scrivere una frase in inglese.

Se vuoi imparare di più sui cicli for in Python, segui il corso Python Data Science Toolbox (Parte 2) di DataCamp.

Per qualsiasi domanda su questo tutorial, sentiti libero di scrivere nei commenti qui sotto.

Argomenti
Python
Data Science
Analisi dei dati

Corsi Python

Corso

Introduzione a Python

4 ore
7.1M
Impara le basi dell’analisi dei dati con Python in sole 4 ore. Questo corso online ti introduce all’interfaccia di Python e ai pacchetti più usati.
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Mostra AltroMostra Altro