Riferimenti: SoftPython - liste 2

EscSummer School Data Science 2023 - Modulo 1 informatica: Moodle
Docente: David Leoni david.leoni@unitn.it
Esercitatore: Luca Bosotti luca.bosotti@studenti.unitn.it
Per manipolare le liste vi sono diversi operatori. I seguenti si comportano come quelli visti per le stringhe.
| Operatore | Esempio | Risultato | Significato |
|---|---|---|---|
| len | len(lst) |
int |
Ritorna la lunghezza di una lista |
| indice | list[int] |
obj | Legge/scrive un elemento all'indice specificato |
| slice | list[int:int] |
list |
Estrae una sotto-lista - ritorna una NUOVA lista |
| inclusione | obj in list |
bool |
Controlla se un elemento è presente in una lista |
| concatenazione | list + list |
list |
Concatena due liste - ritorna una NUOVA lista |
| massimo | max(lst) |
int |
Data una lista di numeri, ritorna il massimo |
| minimo | min(lst) |
int |
Data una lista di numeri, ritorna il minimo |
| somma | sum(lst) |
int |
Data una lista di numeri, li somma tutti |
| replicazione | list * int |
list |
Replica la lista - ritorna una NUOVA lista |
| uguaglianza | ==,!= |
bool |
Controlla se due liste sono uguali o differenti |
Riferimenti: SoftPython - liste 2
Per accedere ad un elemento usiamo un indice (come per per le stringhe):
# 0 1 2
lista = ["ciao", "soft", "python"]
lista[1]
'soft'
In una lista possiamo MODIFICARE le celle con l'assegnazione:
lista[1] = "SOFT"
lista
['ciao', 'SOFT', 'python']
DOMANDA: la cambierà oppure no?
DOMANDA: la cambierà oppure no?
verdure = ['pomodori', 'verze', 'carote', 'cavoli']
verdure[2]
'carote'
DOMANDA Se vogliamo il primo carattere della stringa?
verdure[2][0]
'c'
verdure[2] è una espressione che produce una stringa..
..quindi si può usare come se fosse una stringa
Data una lista giochi di esattamente 3 stringhe, scrivi del codice che MODIFICA la lista in modo che contenga solo i primi caratteri di ciascuna stringa
giochi = …)Esempio - data:
giochi = ["Monopoli", "RISIKO", "Tombola"]
Dopo l’esecuzione del tuo codice, deve risultare:
>>> print(giochi)
["M","R","T"]
Vedi slide seguente
MODIFICARE la regione di memoria puntata dalla variabile
OPPURE
MODIFICARE l'associazione di variabile
?
vedi slide seguente
giochi = e guarda cosa stampa
Possiamo estrarre sottosequenze con le slice, come per le stringhe:
# 0 1 2 3 4 5 6 7 8 9
la = [40,70,90,80,60,10,40,20,50,60]
lb = la[3:7]
print(lb)
[80, 60, 10, 40]
ATTENZIONE: l'estrazione produce una NUOVA lista
se modifichiamo l'originale non vedremo alcun cambiamento nella stringa estratta:
la[3] = 999
print(la)
[40, 70, 90, 999, 60, 10, 40, 20, 50, 60]
print(lb)
[80, 60, 10, 40]
la = [40,70,90,80,60,10,40,20,50,60]
la[3:]
[80, 60, 10, 40, 20, 50, 60]
la[3:-1]
[80, 60, 10, 40, 20, 50]
la[:3]
[40, 70, 90]
| Stringhe | Liste |
|---|---|
sa = "me vuoi fregà"
sb = sa[:]
sa[0] = "Z"
print(sa)
print(sb)
|
la = ["me","vuoi","fregà"]
lb = la[:]
la[0] = "Z"
print(la)
print(lb)
|
in¶"mela" in ["anguria","mela","banana"]
True
"carota" in ["anguria","banana","mela"]
False
not "carota" in ["anguria","banana","mela"] # si può fare ma non mi piace
True
"carota" not in ["anguria","banana","mela"] # preferisco
True
indovina il risultato¶4 in [1,2,3,4,5]
[4] in [1,2,3,4,5]
(4) in [1,2,3,4,5]
[4,5] in [1,2,3,4,5]
[4,5] in [[1,2,3],[4,5]]
L’operatore + produce una NUOVA lista e non modifica gli operandi originali
[6,7,8] + [9]
[] + ['b','a','m']
[[]] + ['b','a','m']
la = ['a','b','c']
lb = la
lb[0] = 'Z'
print(la)
print(lb)
la = ['a','b','c']
lb = la + ['d','e','f']
lb[0] = 'Z'
print(la)
print(lb)
['a','b','c'] == ['a','b','c']
True
['a','b','c'] == ['A','B','C']
False
id e uguaglianza¶Ad ogni regione di memoria è associato un numero univoco
La funzione di sistema id ricava il numero
id serve per sapere se due regioni di memoria mutabili sono distinte
V COMANDAMENTO: Non ridifinerai mai funzioni di sistema
NON scrivere id = ...
NON scrivere len = ...
NON scrivere sum = ...
NON scrivere min = ...
NON scrivere max = ...