edubun
Italiano

Liste

Una lista di 5 elementi ha indici da 0 a 4, quindi menu[4] è l'ultimo elemento e menu[5] ferma il programma con IndexError.

Una variabile può contenere un intero menu

Un menu della mensa scolastica ha più piatti, e una lista della spesa ha più articoli. Potresti fare una variabile per ogni piatto, dish1, dish2, dish3, ma non funziona più appena il menu cresce. Una lista tiene un numero qualsiasi di valori in una variabile, in ordine. Scrivi i valori tra parentesi quadre, separati da virgole.

menu = ["rice", "seaweed soup", "bulgogi", "kimchi", "milk"]
print(menu)
print(len(menu))
print(menu[0], menu[-1])
Output
['rice', 'seaweed soup', 'bulgogi', 'kimchi', 'milk']
5
rice milk

Le liste usano gli stessi numeri di indice delle stringhe: 0 per il primo elemento, -1 per l'ultimo, e porzioni come menu[1:3]. len() dà il numero di elementi. Quando stampi un'intera lista, Python mostra le parentesi e mette ogni stringa tra apici singoli, così vedi esattamente dove inizia e finisce ogni elemento.

A differenza delle stringhe, le liste possono cambiare

Una stringa non si può modificare sul posto, ma una lista sì. Assegna a un indice per sostituire un elemento. append() aggiunge un elemento in fondo, remove() cancella il primo valore corrispondente, e pop() toglie l'ultimo elemento e te lo restituisce. La parola chiave in controlla se un valore è nella lista. Questi metodi cambiano la lista stessa, ed è la grande differenza con i metodi delle stringhe.

cart = ["eggs", "milk"]
cart.append("tofu")
cart[0] = "ramen"
print(cart)
cart.remove("milk")
last = cart.pop()
print(cart, last)
print("tofu" in cart)
Output
['ramen', 'milk', 'tofu']
['ramen'] tofu
False
Dopo questa rigacart
cart = ["eggs", "milk"]['eggs', 'milk']
cart.append("tofu")['eggs', 'milk', 'tofu']
cart[0] = "ramen"['ramen', 'milk', 'tofu']
cart.remove("milk")['ramen', 'tofu']
last = cart.pop()['ramen'] (l'ultimo è 'tofu')

Le liste di numeri hanno strumenti già pronti

Per una lista di numeri, sum(), min() e max() fanno ciò che dicono i loro nomi. sorted() restituisce una nuova lista in ordine e lascia stare l'originale, mentre il metodo sort() riordina la lista stessa e non restituisce nulla. La media è la somma divisa per il numero di elementi, un bell'uso di len().

scores = [72, 95, 88, 64, 81]
print(sum(scores), min(scores), max(scores))
print(sum(scores) / len(scores))
print(sorted(scores))
print(scores)
Output
400 64 95
80.0
[64, 72, 81, 88, 95]
[72, 95, 88, 64, 81]

Due nomi possono puntare alla stessa lista

Ecco la parte che fa inciampare quasi tutti. Dopo b = a, non ci sono due liste. C'è una lista con due nomi. Cambiala attraverso b, e anche a vede il cambiamento, perché a e b sono la stessa lista. Con numeri e stringhe non te ne accorgi mai, perché non si possono cambiare sul posto. Con le liste sì. Se vuoi una copia separata, chiedila con a.copy() o con la porzione a[:].

b = a non copia la lista. Entrambi i nomi puntano alla stessa lista, quindi b.append(...) si vede anche quando stampi a.
a = ["rice", "soup"]
b = a
b.append("kimchi")
print(a)
c = a.copy()
c.append("egg")
print(a)
print(c)
Output
['rice', 'soup', 'kimchi']
['rice', 'soup', 'kimchi']
['rice', 'soup', 'kimchi', 'egg']

Liste e cicli vanno insieme. Una lista di 30 voti di verifiche è utile solo se un programma può visitarli tutti senza scrivere 30 righe separate, ed è ciò che fa il ciclo for nell'unità sui cicli. Fino ad allora, sum(), min(), max() e len() fanno la visita per te, una chiamata ciascuno.

listaValori in ordine tra [ ], separati da virgole
append(x)Aggiunge x in fondo alla lista
remove(x)Cancella il primo elemento uguale a x
pop()Toglie l'ultimo elemento e lo restituisce
sorted(list)Nuova lista ordinata; l'originale non cambia
list.sort()Ordina la lista stessa e restituisce None
a.copy()Una copia separata della lista a
  1. Cosa stampa questo codice?
    nums = [10, 20, 30, 40]
    print(nums[2])
  2. Cosa stampa questo codice?
    nums = [10, 20, 30, 40]
    print(nums[-1] + nums[0])
  3. Cosa stampa questo codice?
    bag = ["pen"]
    bag.append("ruler")
    bag.append("eraser")
    print(len(bag))
  4. Cosa stampa questo codice?
    x = [3, 1, 2]
    y = sorted(x)
    print(x, y)
    • [3, 1, 2] [1, 2, 3]
    • [1, 2, 3] [1, 2, 3]
    • [1, 2, 3] [3, 1, 2]
    • [3, 1, 2] None
  5. Cosa stampa questo codice?
    x = [3, 1, 2]
    y = x.sort()
    print(x, y)
    • [3, 1, 2] [1, 2, 3]
    • [1, 2, 3] [1, 2, 3]
    • [1, 2, 3] None
    • An error
  6. Cosa stampa questo codice?
    a = [1, 2]
    b = a
    b.append(3)
    print(a)
    • [1, 2]
    • [1, 2, 3]
    • [3]
    • An error
  7. Cosa stampa questo codice?
    marks = [70, 90, 80]
    print(sum(marks) / len(marks))
  8. Cosa stampa questo codice?
    stations = ["Seoul", "Yongsan", "Noryangjin", "Daebang"]
    print(stations[1:3])
  9. Cosa stampa questo codice?
    stack = ["a", "b", "c"]
    top = stack.pop()
    print(top, len(stack))
  10. Cosa stampa questo codice?
    print("milk" in ["eggs", "milk", "tofu"])
  11. Metti le righe in ordine perché il programma stampi la lista qui sotto.
    Output
    ['homework', 'piano']
Errori comuni
  • «L'ultimo elemento è menu[len(menu)].» Con 5 elementi gli indici si fermano a 4, quindi menu[5] si ferma con IndexError: list index out of range. Usa menu[-1] o menu[len(menu) - 1].
  • «menu = menu.append(x) conserva la nuova lista.» append() cambia la lista e restituisce None, quindi questa riga sostituisce l'intera lista con None. Scrivi menu.append(x) da solo.
  • «b = a mi dà una copia di riserva della lista.» Dà alla stessa lista un secondo nome. I cambiamenti fatti tramite uno dei due nomi compaiono in entrambi. Usa b = a.copy() per una copia vera.
Nota per l'insegnanteIl menu della mensa funziona perché ogni studente ne legge già uno ogni giorno. Fagli scrivere il menu del giorno come lista e rispondere a tre domande con il codice: quanti piatti, quale è il primo, quale è l'ultimo. La differenza tra sort() e sorted() e lo sbaglio menu = menu.append(x) sono la stessa lezione: alcuni metodi cambiano l'oggetto e restituiscono None. Disegna alla lavagna la figura degli alias e mettila in scena con due foglietti adesivi su una sola scatola. Il curricolo coreano di informatica delle medie chiede programmi che usino una struttura sequenziale come una lista per gestire molti valori, quindi un breve progetto che somma una lista di voti ci sta bene.
Punti chiave
  • Una lista contiene valori in ordine: [a, b, c].
  • Indici e porzioni funzionano come per le stringhe; l'ultimo indice è len - 1.
  • append, remove, pop e l'assegnazione a un indice cambiano la lista stessa.
  • sorted() restituisce una nuova lista; sort() cambia la lista e restituisce None.
  • b = a condivide una sola lista; usa a.copy() per una separata.
Fonti di questo corso (6)
  • Python Software Foundation, The Python Tutorial for Python 3.12 (docs.python.org/3.12/tutorial: 2 Using the Python Interpreter, 3 An Informal Introduction to Python (numbers, text, lists), 4 More Control Flow Tools (if, for, range, break and continue, defining functions, default argument values, 4.10 coding style: 4-space indentation), 5 Data Structures (list methods, 5.5 dictionaries, insertion order), 8 Errors and Exceptions (syntax errors, exceptions, reading the traceback, handling exceptions), 15 Floating-Point Arithmetic (0.1 + 0.2))
  • Built-in Functions (docs.python.org/3.12/library/functions.html: print, input, len, int, float, str, type, round (round half to even: round(0.5) and round(-0.5) are 0, round(1.5) is 2), range, sum, min, max, sorted)
  • Built-in Types (str methods upper, lower, replace, strip; dict.get; list.append, pop, remove, sort returning None)
  • General Python FAQ (docs.python.org/3.12/faq/general.html: Guido van Rossum began Python in the 1989 Christmas holidays, posted it to USENET in February 1991, named it after Monty Python's Flying Circus)
  • Curriculum for the Korean pages: 교육부 고시 제2022-33호 [별책 10] 정보과 교육과정 (PDF read 2026-10-19: 중학교 정보 [9정03-05] 리스트 등 데이터를 순차적으로 저장하는 구조, [9정03-06] 논리 연산과 중첩 제어 구조, [9정03-07] 함수 활용과 디버거로 오류 수정, [9정03-08] 실생활 문제를 프로그래밍으로 해결, 적용 시 고려 사항 「학생의 수준을 고려하여 적합한 프로그래밍 언어를 선정」; 고등학교 정보 [12정03-04] 자료형, [12정03-05] 표준입출력, [12정03-07] 제어 구조)
  • Bug story only: Smithsonian National Museum of American History, Log Book With Computer Bug, 1947, Harvard Mark II, "first actual case of bug being found", probably not Hopper's log book (americanhistory.si.edu/collections/object/nmah_334663, read 2026-10-19)

Consultato il: 2026-10-19