Corso
Nel mondo della programmazione Python, padroneggiare i cicli è fondamentale. Questo tutorial fa luce sul ciclo Python for i in range, un costrutto essenziale in Python che semplifica i compiti ripetitivi. Intraprenderemo un percorso per comprenderne la sintassi, la versatilità e le applicazioni pratiche.
L'essenza dei cicli for in Python
Un ciclo for in Python è una struttura di controllo usata per iterare su una sequenza (come una lista, una tupla, un dizionario o una stringa). Il bello del ciclo for di Python è la sua capacità di iterare direttamente sugli elementi di una sequenza in modo chiaro e conciso.
Sintassi del ciclo for
for item in sequence:
# perform actions
Qui, item rappresenta ciascun elemento della sequenza e il ciclo esegue il blocco di codice per ogni elemento.
Approfondire la funzione range() di Python
La funzione range() in Python è fondamentale per generare una sequenza di numeri, offrendo maggiore controllo e flessibilità nei cicli.
La flessibilità di range()
Uso con un solo argomento
- Genera numeri da 0 a n-1.
- Esempio: range(5) produce 0, 1, 2, 3, 4.
Uso con due argomenti
- Specifica l'inizio e la fine della sequenza.
- Esempio: range(10, 15) restituisce 10, 11, 12, 13, 14.
Uso con tre argomenti
- Aggiunge la possibilità di specificare il passo di incremento.
- Esempio: range(1, 20, 2) produce 1, 3, 5, ..., 19.
Applicazioni pratiche ed esempi
Iterare sulle collezioni
1. Stringhe: itera su ogni carattere.
for char in "Hello":
print(char)
H
e
l
l
o
Questo ciclo itera su ogni carattere della stringa "Hello". Il ciclo for assegna a turno ciascun carattere ('H', 'e', 'l', 'l', 'o') alla variabile char e lo stampa. Quindi, l'output sarà ogni carattere di "Hello" su una nuova riga.
2. Liste: attraversa gli elementi della lista.
for num in [1, 2, 3]:
print(num)
1
2
3
Qui, il ciclo scorre la lista [1, 2, 3]. A ogni iterazione, num assume il valore dell'elemento successivo della lista, iniziando con 1, poi 2 e infine 3. Ogni numero viene stampato, risultando nei numeri 1, 2 e 3 ciascuno su una nuova riga.
3. Dizionari: accedi a chiavi e valori.
for key, value in {'a': 1, 'b': 2}.items():
print(key, value)
a 1
b 2
Questo ciclo itera su un dizionario contenente due coppie chiave-valore ('a': 1 e 'b': 2). Il metodo .items() restituisce un oggetto vista che mostra un elenco di coppie tupla chiave-valore del dizionario. A ogni iterazione, key e value ricevono rispettivamente la chiave e il valore dell'elemento successivo del dizionario, che vengono poi stampati.
Meccanismi di controllo del ciclo
1. L'istruzione break: termina il ciclo in anticipo.
for i in range(10):
if i == 5:
break
Questo codice itera da 0 a 9 (come generato da range(10)). Quando il valore di i raggiunge 5, la condizione dell'istruzione if è soddisfatta, attivando l'istruzione break. Questo interrompe il ciclo, anche se non ha iterato su tutti i valori fino a 9.
2. L'istruzione continue: salta l'iterazione corrente.
for i in range(10):
if i % 2 == 0:
continue
print(i)
1
3
5
7
9
Anche questo ciclo itera da 0 a 9. Tuttavia, l'istruzione if verifica se i è un numero pari (è ciò che fa i % 2 == 0: controlla se il resto della divisione di i per 2 è 0). Se è pari, viene eseguita l'istruzione continue, che salta il resto del corpo del ciclo per quella iterazione. Pertanto, vengono stampati solo i numeri dispari
Tecniche avanzate con i cicli for
1. Cicli annidati
Questo è un esempio di cicli annidati, in cui un ciclo è all'interno di un altro. Il ciclo esterno (for i in range(3)) itera attraverso i numeri 0, 1 e 2. Per ogni iterazione del ciclo esterno, il ciclo interno (for j in range(3)) itera anch'esso attraverso i numeri 0, 1 e 2. L'istruzione print(i, j) viene eseguita per ogni combinazione di i e j.
for i in range(3):
for j in range(3):
print(i, j)
0 0
0 1
0 2
1 0
1 1
1 2
2 0
2 1
2 2
L'output sarà una serie di coppie che rappresentano tutte le combinazioni di i e j nell'intervallo da 0 a 2.
2. Iterare con enumerate
La funzione enumerate aggiunge un contatore a un iterabile e lo restituisce sotto forma di oggetto enumerate. Questo oggetto può essere usato direttamente nei cicli for. In questo esempio, il ciclo for viene usato con enumerate su una lista ['a', 'b', 'c'].
for index, value in enumerate(['a', 'b', 'c']):
print(index, value)
0 a
1 b
2 c
La funzione enumerate aggiunge un indice a ciascun elemento della lista, a partire da 0 per impostazione predefinita. Il ciclo quindi itera su questo oggetto enumerate, decomponendo ogni elemento in index e value. index è l'indice di ciascun elemento e value è l'elemento corrispondente della lista. Quindi, l'output sarà una serie di righe con indice e valore.
Questi esempi illustrano come i cicli annidati possano essere usati per eseguire iterazioni complesse e come enumerate possa essere usato per tracciare facilmente l'indice degli elementi in un ciclo.
Come vengono usati i cicli for nella data science
Il ciclo for è un concetto cruciale nella programmazione Python e nell'analisi dei dati. Ha un'ampia gamma di applicazioni, come l'iterazione su liste e array, che semplifica le attività di manipolazione dei dati. Uso spesso i cicli for, in particolare quelli annidati, per gestire in modo efficiente strutture dati multidimensionali, uno step essenziale nella creazione di algoritmi di machine learning. Inoltre, i data scientist combinano spesso i cicli for con la logica condizionale per l'elaborazione di dati complessi, come l'aggregazione dei dati, ad esempio il calcolo della media di un elenco di numeri.
Tuttavia, i cicli for potrebbero non essere l'opzione migliore quando si lavora con grandi dataset e algoritmi di deep learning. Ecco perché abbiamo librerie come NumPy, pandas e PyTorch, ottimizzate per operazioni vettorializzate, che le rendono più efficienti per la manipolazione di dati su larga scala.
Conclusione: abbracciare l'efficienza dei cicli
In conclusione, il ciclo for di Python è uno strumento indispensabile per i programmatori. La sua semplicità, unita alla potenza della funzione range(), lo rende ideale per una varietà di compiti iterativi nella data science e nella programmazione generale. Man mano che metti in pratica e applichi questi concetti, scoprirai che il tuo codice Python diventa più efficiente ed espressivo.
Puoi approfondire gli While Loop nel nostro tutorial completo ed esplorare questo e altri concetti nel nostro corso di Python intermedio.
In quanto data scientist certificato, sono appassionato di sfruttare tecnologie all’avanguardia per creare applicazioni di machine learning innovative. Con una solida esperienza in riconoscimento vocale, analisi e reportistica dei dati, MLOps, AI conversazionale e NLP, ho affinato le mie competenze nello sviluppo di sistemi intelligenti in grado di avere un impatto concreto. Oltre alla mia expertise tecnica, sono anche un comunicatore efficace, con il talento di rendere chiari e sintetici concetti complessi. Di conseguenza, sono diventato un blogger molto seguito in ambito data science, condividendo idee ed esperienze con una community in crescita di professionisti dei dati. Attualmente mi concentro sulla creazione e sull’editing di contenuti, lavorando con large language model per sviluppare contenuti potenti e coinvolgenti che possano aiutare aziende e singoli a valorizzare al meglio i propri dati.


