6.1 Ciclo for
In Python i cicli sugli elementi di una lista sono spesso implementati tramite
il ciclo for
. È uno degli approcci più comuni per iterare su una lista,
permettendo di eseguire un blocco di codice per ogni elemento della lista.
Basi del ciclo for
Il ciclo for
in Python scorre ogni elemento di una lista, assegnando temporaneamente
il valore dell'elemento corrente a una variabile, specificata dopo la parola chiave for
. Esempio:
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)
Iterare su una lista in ordine inverso può essere realizzato con i slicing:
fruits = ["apple", "banana", "cherry"]
for fruit in fruits[::-1]:
print(fruit)
6.2 Ciclo for
con indici
Oltre a iterare su una lista con il classico for
, puoi iterare
su una lista utilizzando il ciclo for
in combinazione con la funzione range()
. Questo
permette di lavorare non solo con gli elementi stessi, ma anche con le loro posizioni, il che
può essere necessario per compiere manipolazioni dati più complesse.
Basi dell'iterazione indicizzata
Per iterare su una lista accedendo all'indice di ogni elemento puoi utilizzare il seguente approccio:
my_list = ['a', 'b', 'c', 'd']
for i in range(len(my_list)):
print(f'Index: {i}, Element: {my_list[i]}')
Vantaggi dell'utilizzo degli indici
L'uso degli indici nei cicli permette non solo di accedere a ogni elemento, ma anche di modificare gli elementi della lista in loco. Questo è particolarmente utile, quando è necessario modificare la lista durante l'iterazione.
Esempio:
my_list = ['a', 'b', 'c', 'd']
for i in range(len(my_list)):
my_list[i] = my_list[i] * 2
Esempi di manipolazioni complesse
Con gli indici è facile implementare algoritmi che richiedono accesso simultaneo a più elementi di una lista, per esempio, per confrontare l'elemento corrente con il precedente o il successivo:
Esempio:
my_list = [3, 5, 2, 9, 4]
for i in range(1, len(my_list)):
if my_list[i] > my_list[i - 1]:
print(f'{my_list[i]} è maggiore di {my_list[i - 1]}')
6.3 Uso della funzione enumerate()
In Python
la funzione enumerate()
fornisce un modo comodo
per iterare sugli elementi di una lista con accesso simultaneo ai loro indici.
Questo è particolarmente utile quando è necessario gestire sia l'indice sia il valore
dell'elemento della lista all'interno del ciclo.
Basi della funzione enumerate()
La funzione enumerate()
avvolge la lista in un oggetto speciale e
restituisce un iteratore, che produce tuple (coppie di valori), composte da
indice e valore dell'elemento:
my_list = ["apple", "banana", "cherry"]
for index, element in enumerate(my_list):
print(f'Index: {index}, Element: {element}')
Ora hai non solo l'elemento, ma anche il suo indice.
Vantaggi di enumerate()
Usare enumerate()
rende il codice più leggibile e
permette di evitare la necessità di gestire manualmente gli indici con
range(len(...))
. Questo semplifica le manipolazioni con gli elementi della lista,
come modificare, accedere agli elementi ed eseguire controlli condizionali.
Esempi d'uso
enumerate()
è ideale per compiti in cui è richiesto
modificare contemporaneamente gli elementi della lista o confrontare gli elementi con i loro
indici:
my_list = ["apple", "banana", "cherry"]
for index, element in enumerate(my_list):
if index % 2 == 0:
print(f'Element {element} at even index {index}')
6.4 Ciclo while
Abbiamo parlato di for
, ora parliamo del ciclo while
. Anche questo ciclo può essere utile quando si lavora con gli elementi di una lista.
Ti ricordo che il ciclo while
inizia il suo lavoro controllando
la condizione. Se la condizione è vera, viene eseguito il corpo del ciclo, e poi la condizione
viene controllata di nuovo. Il processo si ripete fino a quando la condizione non diventa
falsa.
Esempio di iterazione su una lista
Supponiamo che tu abbia una lista di numeri, e vuoi iterare attraverso di essa fino a incontrare un certo valore:
numbers = [1, 2, 3, 4, 5, -1, 6]
i = 0
while i < len(numbers) and numbers[i] != -1:
print(numbers[i])
i += 1
Non è molto diverso dal ciclo for
, vero? Ma ci sono casi in cui non
è necessario usare l'indice per lavorare con gli elementi della lista. Per esempio, nella
lista ci sono alcuni compiti, che devono essere estratti uno alla volta dalla lista,
eseguiti e rimossi dalla lista.
Questo codice potrebbe essere scritto in modo schematico così:
tasks = [1, 2, 3, 4, 5, -1, 6]
while len(tasks) > 0:
task = tasks.pop()
print(task)
GO TO FULL VERSION