Vai al contenuto
eLearner.app
Modulo 3 · Lezione 1 di 49/36 nel corso~12 min
Lezioni del modulo (1/4)

Liste

Una lista è una sequenza ordinata e mutabile di elementi. È la struttura dati più usata in Python: la creerai con [] e la modificherai con una serie di metodi che vale la pena memorizzare.

Creare una lista

Python
vuota = []
numeri = [10, 20, 30]
mista = [1, "due", 3.0, True, None]    # tipi diversi: legale ma raro

Accesso per indice e slice

Gli indici partono da 0. Gli indici negativi contano da destra:

Python
parole = ["a", "b", "c", "d"]
parole[0]    # 'a'
parole[-1]   # 'd'   (ultimo)
parole[1:3]  # ['b', 'c']   slice [start:stop]
parole[::-1] # ['d', 'c', 'b', 'a']   reverse

Lo slice non solleva mai IndexError: se è fuori range, restituisce una sotto-lista vuota. L'accesso diretto parole[10], invece, solleva eccezione.

Modificare una lista

Python
nums = [1, 2, 3]
nums.append(4)         # [1, 2, 3, 4]    aggiunge in fondo
nums.insert(0, 0)      # [0, 1, 2, 3, 4] inserisce in posizione
nums.extend([5, 6])    # [0, 1, 2, 3, 4, 5, 6]   concatena
nums.pop()             # 6   estrae ultimo
nums.pop(0)            # 0   estrae primo (più lento: O(n))
nums.remove(3)         # rimuove la PRIMA occorrenza di 3
nums[1] = 99           # sostituisce per indice

Ordinare

Due forme, importante distinguerle:

Python
nums = [3, 1, 4, 1, 5, 9, 2, 6]
nums.sort()          # MUTA nums in place, ritorna None
ordinati = sorted(nums)  # ritorna NUOVA lista, lascia nums invariata
nums.sort(reverse=True)
sorted(nums, key=lambda n: -n)   # ordinamento per chiave

Lunghezza, appartenenza, iterazione

Python
len(nums)              # quanti elementi
3 in nums              # True/False
for n in nums:
    print(n)

Copiare una lista

a = b non copia, fa solo un secondo nome per la stessa lista. Per copiare davvero:

Python
copia = lista[:]            # slice completo
copia = list(lista)         # costruttore esplicito
copia = lista.copy()        # metodo

(Sono tutte copie superficiali — gli elementi annidati restano condivisi.)

Copiare liste: attenzione ai riferimenti

In Python, quando scrivi lista_b = lista_a, non stai creando una copia della lista: stai solo creando un secondo riferimento. Modificando lista_b, modificherai anche lista_a. Per creare una vera copia indipendente, devi usare lista_b = lista_a.copy() oppure lo slicing completo lista_b = lista_a[:].

Prova tu

Esercizio#python.m3.l1.e1
Tentativi: 0Caricamento…

Data la lista `nums = [5, 2, 8, 1, 9, 3]`, costruisci `first_three_sorted` con i primi tre numeri di nums ordinati in modo crescente. Non modificare nums.

Caricamento editor…
Mostra suggerimento

nums[:3] sono i primi tre, poi sorted(...).

Soluzione disponibile dopo 3 tentativi

Esercizio di ripasso

Esercizio#python.m3.l1.e2
Tentativi: 0Caricamento…

Partendo da `words = ['ciao']`, aggiungi in fondo 'mondo' poi inserisci '!' all'inizio. Valuta `words`.

Caricamento editor…
Mostra suggerimento

append in coda, insert(0, ...) in testa.

Soluzione disponibile dopo 3 tentativi

Sfida aggiuntiva

Esercizio#python.m3.l1.e3
Tentativi: 0Caricamento…

Data la lista `items = [10, 20, 30, 40]`, usa lo slicing per creare una nuova lista `reversed_items` che contenga gli stessi elementi ma in ordine inverso. Valuta infine `reversed_items`.

Caricamento editor…
Mostra suggerimento

Lo slicing con step negativo è [::-1]. Assegnalo a reversed_items.

Soluzione disponibile dopo 3 tentativi