CodeGym /Corso Java /Python SELF IT /Cicli su liste

Cicli su liste

Python SELF IT
Livello 7 , Lezione 6
Disponibile

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)
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION