Created: 2024-01-25 gio 23:51
test = [1,2,3,4,5]
test = [i for i in range(1,6)]
test = ["one", "two", "three", "four", "five"]
test = "one two three four five".split()
test = "Group 1: 1,2,3,4; Group 2: 3,4,5,6"
result = [x.split(":")[1] for x in test.split(";")]
cosa c'e' in result? :)
(provate a capirlo senza eseguire il codice)
test = [[1,2,3,4,5],[1,2,3,4,5]]
test = [[i for i in range(1,6)] for j in range(2)]
Le comprehensions sono utili per velocizzare la scrittura di codice noioso;
Dato un numero \(n\) scelto dall'utente, generare la seguente lista (\(n=4\)):
lista = [1, 'ciao', 2, 'ciao', 3, 'ciao', 4, 'ciao']
L = [x//2 + 1 if x%2 == 0 else "ciao" for x in range(0,2*n)]
data = {("matteo", "lugli"):1.89}
print(data["matteo"])
Cosa stampa?
ERRORE!
Quando le cose non vanno, si cerca di capire il motivo e di risolvere…
L'accesso corretto al dizionario e':
print(data[("matteo", "lugli")])
Per aggiornare il valore associato a una chiave, la sintassi e' la seguente:
data[("matteo", "lugli")] = 1.90
Attenzione: alla chiave ("matteo", "lugli") puo' essere associato un solo valore!
Per aggiungere un nuovo elemento ad un dizionario, la sintassi e' altrettanto semplice:
data[("giovanni", "varetto")] = 1.70
data[("filippo", "bondanelli")] = 1.84
data[("francesco", "terzi")] = 1.81
Un dizionario (come la maggior parte degli oggetti in python) e' iterabile: significa che con un ciclo for possiamo visitare i suoi elementi:
for key, value in data.items():
print("{} è alto {}".format(key, value))
Diamo un occhio all'output…
('matteo', 'lugli') è alto 1.9
('giovanni', 'varetto') è alto 1.7
('filippo', 'bondanelli') è alto 1.84
('francesco', 'terzi') è alto 1.81
Dato che la chiave key e' una tupla, l'output risulta non bellissmo a vedersi…
Un trick da maestro…
for key, value in data.items():
print("{} {} è alto {}".format(*key, value))
matteo lugli è alto 1.9
giovanni varetto è alto 1.7
filippo bondanelli è alto 1.84
francesco terzi è alto 1.81
*key abbiamo "spacchettato" gli elementi
salvati dentro key (che e' una tupla);"{} {}" usate come placeholder;\(\Rightarrow\) il nome e cognome compaiono separati da uno spazio, formattati correttamente.
E se ti dicessi… che le list comprehension funzionano anche per generare dizionari?
La logica e' la stessa delle list compr.,
e anche la sintassi e' simile.
Ad esempio:
l = ["one", "two", "three", "four"]
diz = {digit:i for i,digit in enumerate(l)}
print(diz)
Cosa stampa?
{'one': 0, 'two': 1, 'three': 2, 'four': 3}
l = ["one", "two", "three", "four"]
diz = {digit:i+1 for i,digit in enumerate(l)}
print(diz)
Come esercizio, cercate di capire in autonomia a cosa serve la direttiva enumerate().