09 - Le Liste e Le Tuple
09 - Le Liste e Le Tuple
md 13/9/2023
Le Liste e le Tuple
Gli argomenti di questo capitolo
Così come una stringa viene definita utilizzando apici o doppi apici, una Lista viene definita utilizzando una
coppia di parentesi quadre. Gli elementi della Lista vengono quindi separati tra loro con le virgole.
1 / 11
09_Le Liste e le Tuple.md 13/9/2023
Abbiamo detto che gli elementi sono ordinati in base ad un indice proprio di ciascuna lista: ciò significa che a
ciascun elemento è associato un numero che ne rappresenta la posizione nell'elenco. Questo è fondamentale
se vogliamo richiamare un elemento specifico in quanto dovremo usare il suo indice corrispondente.
Ricordate bene che il primo valore della Lista ha sempre indice 0. Quindi 2 avrà indice 0, 5 avrà indice
1, 'bacon' avrà indice 2 e così via... Volendo quindi stampare 'bacon' dobbiamo quindi scrivere
print(elenco[2])
Indici negativi
Se utilizziamo invece un indice negativo possiamo accedere agli elementi della lista dalla fine all'inizio,
utilissimo ad esempio in caso di Liste particolarmente lunghe. L'ultimo elemento ha indice -1, il penultimo -2 e
così via.. Per richiamare il 3.14 possiamo fare:
print(elenco[-2])
primi = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47]
print(primi[4:10])
il risultato sarà:
Se volessimo creare una nuova variabile che comprenda i numeri primi dal 11 al 29 basterà quindi fare:
primi = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47]
fetta = primi[4:11]
print(fetta)
NOTA: come avrete notato, lo slicing si comporta esattamente come la funzione range in cui l'ultimo
elemento indicato nell'intervallo non viene utilizzato.
Per ottenere tutti i numeri dal quinto all'ultimo nella nostra lista possiamo fare:
2 / 11
09_Le Liste e le Tuple.md 13/9/2023
primi = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47]
fetta = primi[4:]
print(fetta)
[11,13,17,19,23,29,31,37,41,43,47]
Se volessimo ottenere gli elementi dal primo (indice 0) al quinto (indice 4), dovremo scrivere:
primi = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47]
fetta = primi[:5] # elemento di posizione 5 non viene preso
print(fetta)
il risultato sarà:
[2,3,5,7,11]
Se ora volessimo stampare gli elementi della fetta, uno alla volta, possiamo fare:
primi = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47]
fetta = primi[:5] # elemento di posizione 5 non viene preso
for i in fetta:
print(i)
il risultato sarà:
2
3
5
7
11
lista_multipla = ["spam","eggs",23,"bacon",[1,2,3,4,5],3]
print(lista_multipla)
il risultato sarà:
["spam","eggs",23,"bacon",[1,2,3,4,5],3]
3 / 11
09_Le Liste e le Tuple.md 13/9/2023
print(lista_multipla[-2])
[1, 2, 3, 4, 5]
print(lista_multipla[-2][-1])
Ancora una volta, gli indici sono indispensabili per lavorare con le liste.
lista_multipla = ["spam","eggs",23,"bacon",[1,2,3,4,5],3]
lista_multipla[3] = "pancetta"
print(lista_multipla)
il risultato sarà:
lista = [1, 2, 3, 4, 5, 6, 7]
lista[0] == 99
[99, 2, 3, 4, 5, 6, 7]
4 / 11
09_Le Liste e le Tuple.md 13/9/2023
lista_multipla = ["spam","eggs",23,"bacon",[1,2,3,4,5],3]
del lista_multipla[-2]
print(lista_multipla)
otterremo:
1. list()
2. len()
3. append()
4. pop()
5. insert()
6. extend()
7. remove()
8. sort()
9. reverse()
10. index()
11. sum()
NOTA: Vedrete che alcune funzioni prendono come argomento la variabile lista e sul suo contenuto
vanno esegue delle operazioni (come list(), *sum() e len()). Altri metodi si agganciano (fatemi passare
per buono questo termine) al nome della lista. Gli esempi renderanno chiaro questa differenza.
list()
Un modo per creare una lista a partire da dati di tipo diverso, ad esempio da una stringa, oppure dai dati
generati dalla funzione range(), oppure come si vedrà in seguito anche da tuple o insiemi o dizionari, è quello
di usare la funzione list(). Vediamo alcuni esempi.
aeiou
['a', 'e', 'i', 'o', 'u']
5 / 11
09_Le Liste e le Tuple.md 13/9/2023
[99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
291, 292, 293, 294, 295, 296, 297, 298, 299]
len()
lista = [1, 2, 3]
lunghezza = len(lista)
print (lunghezza)
append()
Con il metodo append(), si aggiunge un elemento alla lista. Questo metodo verrà inserito alla fine della lista,
come ultimo elemento. Supponiamo di aver creato una lista di nome inventario.
e supponiamo di voler aggiungere un nuovo elemento. Si può utilizzare il metodo append() nel seguente
modo
inventario.append("frecce")
6 / 11
09_Le Liste e le Tuple.md 13/9/2023
print(inventario)
otterremo:
["torcia","spada","pane elfico","arco","frecce"]
esempio
Il codice di seguito indicato permette l'inserimento di nuove armi fino a quando ne abbiamo da inserire:
def riempi_inventario():
inventario = []
oggetto = ""
while True:
oggetto = input('Cosa vuoi aggiungere all\'inventario? ')
if oggetto == "terminato":
break
else:
inventario.append(oggetto)
riempi_inventario()
insert()
Un altro modo per inserire un elemento in una certa posizione è quello di utilizzare il metodo insert(pos,
valore). Ad esempio:
lista = [1, 2, 3, 4, 5, 6, 7]
lista.insert(0) == 99
[99, 2, 3, 4, 5, 6, 7]
extend()
Supponiamo di avere due liste, chiamate lista_a e lista_b, e di voler aggiungere gli elementi di lista_b a quelli
presenti in lista_a. Possiamo utilizzare il metodo extend() per questo scopo:
lista_a = ["pippo","pluto","giacobbe"]
lista_b = ["spam","eggs","bacon"]
7 / 11
09_Le Liste e le Tuple.md 13/9/2023
lista_a.extend(lista_b)
print(lista_a)
il risultato sarà:
remove()
Al contrario della funzione append() possiamo eliminare invece elementi dalla lista mediante la funzione
remove() utilizzando il valore dell'elemento che vogliamo rimuovere. Creiamo una nuova lista:
monty = ["spam","eggs","bacon","bob","alice","pluto"]
Al contrario della funzione del in cui andiamo ad eliminare un elemento della lista a partire dal suo indice, con
la funzione remove andremo ad eliminare l'elemento indicando il suo nome. Ad esempio:
monty.remove("pluto")
print(monty)
sort()
sort, traducibile in italiano con il termine ordinare, consente di ordinare i valori di una lista, in modo alfabetico
se essa contiene stringhe, o in modo numerico se nella lista ci sono numeri.
alfabeto = ["z","u","a","c","v"]
numeri = [32,1,15,2,22,23,56,88]
alfabeto.sort()
numeri.sort()
print(alfabeto)
print(numeri)
il risultato sarà:
8 / 11
09_Le Liste e le Tuple.md 13/9/2023
numeri = [32,1,15,2,22,23,56,88]
numeri.sort(reverse=True)
print(numeri)
il risultato sarà:
index()
numeri = [32,1,15,2,22,23,56,88]
a= numeri.index(22)
print(a)
provate:
Scrivere un programma che inseriti in una lista dei numeri forniti in input, crei una nuova lista con tutti i numeri
della prima lista eccetti i multipli di 3 e di 2
pop()
lista = [1, 2, 3, 4, 5, 6, 7]
lista.pop()
[1, 2, 3, 4, 5, 6]
Se poi vogliamo estrarre un elemento fornendo la posizione, possiamo usare la pop(posizione) indicando la
posizione dell'elemento che vogliamo eliminare. Esempio:
lista = [1, 2, 3, 4, 5, 6, 7]
lista.pop(1)
il risultato sarà che l'elemento in posizione 1 verrà cancellato dalla lista ed il suo contenuto diventerà:
9 / 11
09_Le Liste e le Tuple.md 13/9/2023
[1, 3, 4, 5, 6, 7]
sum()
Per fare la somma dei numeri contenuti in una lista si può fare un ciclo for per tutta la lunghezza della lista è
ogni volta si somma l'elemento ad un variabile come indicato nell'esempio sotto riportato:
lista = [1, 2, 3]
somma = 0
for i in range(0,len(lista)):
somma = somma + lista[i]
print(somma)
Python ci semplifica la vita e ci mette a disposizione una funzione, la funzione sum(nomelista) che da sola
restituisce la somma degli elementi della lista. Provate l'esempio sotto riportato.
lista = [1, 2, 3]
somma = sum(lista)
print (somma)
Le tuple
Parliamo ora molto brevemente delle Tuple. Come le liste si tratta di un gruppo, un insieme di elementi,
definiti stavolta utilizzando una coppia di parentesi tonde. Sono quindi molto simili alle liste (collezione di
dati).
La differenza essenziale è che le tuple sono immutabili mentre le liste non lo sono.
Anche nelle tuple ogni elemento è individuato dalla sua posizione, quindi dal suo indice. Ma, essendo
immutabile, gli elementi di una tupla si possono consultare ma non modificare.
>>>tuple[0]
2
10 / 11
09_Le Liste e le Tuple.md 13/9/2023
11 / 11