Liste 2: operatori¶

Riferimenti: SoftPython - liste 2

  • visualizza al meglio in
  • versione stampabile: clicca qua
  • per navigare nelle slide: premere 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

Liste - operatori¶

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):

In [2]:
        #   0      1         2 
lista = ["ciao", "soft", "python"]
lista[1]
Out[2]:
'soft'

In una lista possiamo MODIFICARE le celle con l'assegnazione:

In [3]:
lista[1] = "SOFT"
In [4]:
lista
Out[4]:
['ciao', 'SOFT', 'python']

Modifica in Python tutor¶

In [5]:
 
Out[5]:
Python Tutor visualization

Mutare liste condivise 1/4¶

DOMANDA: la cambierà oppure no?

In [6]:
 
Out[6]:
Python Tutor visualization

Mutare liste condivise 2/4¶

DOMANDA: la cambierà oppure no?

In [7]:
 
Out[7]:
Python Tutor visualization

Mutare liste condivise 3/4¶

  • Cosa verrà stampato?
  • Quante liste ci saranno effettivamente in memoria?
  • Prima di cliccare, disegna su CARTA!
In [8]:
 
Out[8]:
Python Tutor visualization

Mutare liste condivise 4/4¶

  • Cosa verrà stampato? Quante liste ci saranno effettivamente in memoria?
  • Prima di cliccare, disegna su CARTA!
In [9]:
 
Out[9]:
Python Tutor visualization

Liste di stringhe¶

In [10]:
verdure = ['pomodori', 'verze', 'carote', 'cavoli']
In [11]:
verdure[2]
Out[11]:
'carote'

DOMANDA Se vogliamo il primo carattere della stringa?

In [12]:
verdure[2][0]
Out[12]:
'c'

verdure[2] è una espressione che produce una stringa..

..quindi si può usare come se fosse una stringa

Esercizio - sigle¶

Stampa la prima e ultima sigla in maiuscolo

  • Vedi metodi stringhe
In [13]:
 
Out[13]:

Esercizio - giochi 1/2¶

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

  • Il tuo codice deve funzionare con qualunque lista di esattamente 3 stringhe
  • IMPORTANTE: NON creare liste nuove (quindi niente assegnazioni come giochi = …)

Esempio - data:

giochi = ["Monopoli", "RISIKO", "Tombola"]

Dopo l’esecuzione del tuo codice, deve risultare:

>>> print(giochi)
["M","R","T"]

Vedi slide seguente

Esercizio - giochi 2/2¶

In [14]:
 
Out[14]:

Cosa significa MODIFICARE? 1/3¶

MODIFICARE la regione di memoria puntata dalla variabile

OPPURE

MODIFICARE l'associazione di variabile

?

vedi slide seguente

Cosa significa MODIFICARE? 2/3¶

  1. Prova la soluzione precedente, guarda cosa stampa
  2. Provalo anche in Python Tutor
In [15]:
 
Out[15]:

Cosa significa MODIFICARE? 3/3¶

  1. Prova adesso una soluzione con giochi = e guarda cosa stampa
  2. Provalo anche in Python Tutor
In [16]:
 
Out[16]:

Slice¶

Possiamo estrarre sottosequenze con le slice, come per le stringhe:

In [17]:
#     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:

In [18]:
la[3] = 999
In [19]:
print(la)
[40, 70, 90, 999, 60, 10, 40, 20, 50, 60]
In [20]:
print(lb)   
[80, 60, 10, 40]

Slice - limiti¶

In [21]:
la = [40,70,90,80,60,10,40,20,50,60]
In [22]:
la[3:]
In [23]:
 
Out[23]:
[80, 60, 10, 40, 20, 50, 60]
In [24]:
la[3:-1]
In [25]:
 
Out[25]:
[80, 60, 10, 40, 20, 50]
In [26]:
la[:3]
In [27]:
 
Out[27]:
[40, 70, 90]

Cosa stampano?¶

StringheListe
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)
  • PRIMA scrivi il risultato che ti attendi
  • POI provali in Python tutor

Operatore in¶

In [28]:
"mela" in ["anguria","mela","banana"]
Out[28]:
True
In [29]:
"carota" in ["anguria","banana","mela"]
Out[29]:
False
In [30]:
not "carota" in ["anguria","banana","mela"]   # si può fare ma non mi piace
Out[30]:
True
In [31]:
"carota" not in ["anguria","banana","mela"]   # preferisco
Out[31]:
True

indovina il risultato¶

In [32]:
4 in [1,2,3,4,5]
In [33]:
[4] in [1,2,3,4,5]
In [34]:
(4) in [1,2,3,4,5]
In [35]:
[4,5] in [1,2,3,4,5]
In [36]:
[4,5] in [[1,2,3],[4,5]]

Concatenazione¶

In [37]:
 
Out[37]:
Python Tutor visualization

L’operatore + produce una NUOVA lista   e   non modifica gli operandi originali

Concatenazione - Indovina il risultato¶

In [38]:
[6,7,8] + [9]
In [39]:
[] + ['b','a','m']
In [40]:
[[]] + ['b','a','m']
In [41]:
la = ['a','b','c']
lb = la
lb[0] = 'Z'
print(la)
print(lb)
In [42]:
la = ['a','b','c']
lb = la + ['d','e','f']
lb[0] = 'Z'
print(la)
print(lb)

Replicazione 1/2¶

In [43]:
 
Out[43]:
Python Tutor visualization

Replicazione 2/2¶

Che succederà se replichiamo oggetti mutabili?

Pensa prima di cliccare!

In [44]:
 
Out[44]:
Python Tutor visualization

Uguaglianza¶

In [45]:
['a','b','c'] == ['a','b','c']
Out[45]:
True
In [46]:
['a','b','c'] == ['A','B','C']
Out[46]:
False
In [47]:
 
Out[47]:
Python Tutor visualization

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

In [48]:
 
Out[48]:
Python Tutor visualization

V COMANDAMENTO: Non ridifinerai mai funzioni di sistema

NON scrivere id = ...

NON scrivere len = ...

NON scrivere sum = ...

NON scrivere min = ...

NON scrivere max = ...

In [ ]: