Riferimenti: SoftPython - liste 2
Esc
Summer 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
in
dovina 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 = ...