Gli appunti dell'incontro del gruppo di approfondimento del linguaggio Python.
Operazioni sulle liste
invitati = ['Giovanni', 'Michelangelo', 'Riccardo', 'Angelo']
daInvitare = ['Giuseppe']
Concatenare |
+ |
c = invitati + daInvitare |
Lista ripetuta |
* |
c = daInvitare * 4 |
Porzione1 |
[n1: n2] |
c = invitati[1:3] |
I metodi
Approfondiamo tutti metodi applicandoli uno di seguito all'altro alla lista:
invitati = ['Giovanni', 'Michelangelo', 'Riccardo', 'Angelo']
- append(): aggiunge alla fine della lista l'elemento che riceve come argomento.
Esempio:
invitati = ['Giovanni', 'Michelangelo', 'Riccardo', 'Angelo']
invitati.append('Giovanni')
print(invitati)
Risultato:
['Giovanni', 'Michelangelo', 'Riccardo', 'Angelo', 'Giovanni']
che ora è la nuova lista invitati.
- count(valore): ritorna il numero di ricorrenza di un determinato valore.
Continuiamo eseguendo
x=invitati.count('Giovanni')
print(x)
Risultato
2
poiché prima abbiamo aggiunto Giovanni in fondo alla lista.
- insert(posizione, oggetto): inserisce un elemento nuovo alla lista nella posizione specificata. Necessita di due argomenti: un intero che rappresenta la posizione e l'altro che è l’elemento da inserire.
Alla luce dei metodi applicati, ora la lista è
invitati = ['Giovanni', 'Michelangelo', 'Riccardo', 'Angelo', 'Giovanni']
digitiamo
invitati.insert(1, 'Paola')
print(invitati)
Risultato
['Giovanni', 'Paola', 'Michelangelo', 'Riccardo', 'Angelo', 'Giovanni'] è stata aggiunta Paola in seconda posizione.
- reverse(): inverte l'ordine degli elementi nella lista.
invitati.reverse()
print(invitati)
Risultato
['Giovanni', 'Angelo', 'Riccardo', 'Michelangelo', 'Paola', 'Giovanni']
- sort(): ordina la lista
invitati.sort() # ordina la lista in senso alfabetico crescente
print(invitati)
Risultato
['Angelo', 'Giovanni', 'Giovanni', 'Michelangelo', 'Paola', 'Riccardo'] Come si può notare, il metodo sort() altera il contenuto della lista; se se ne vuol mantenere l'ordine originale degli elementi, può risultare utile l'uso della funzione sorted2
invitati = ['Giovanni', 'Michelangelo', 'Riccardo', 'Angelo']
invitati_ord = sorted(invitati)
print(invitati)
print(invitati_ord)
Risultato
['Giovanni', 'Michelangelo', 'Riccardo', 'Angelo']
['Angelo', 'Giovanni', 'Michelangelo', 'Riccardo']
- pop(indice): rimuove e restituisce l’elemento nella posizione indicata o l’ultimo della lista qualora la posizione fosse omessa.
invitati.pop(1)
print(invitati)
Risultato
['Angelo', 'Giovanni', 'Michelangelo', 'Paola', 'Riccardo']
Se invece del semplice invitati.pop(1) avessimo digitato x = invitati.pop(1),
Giovanni non solo sarebbe stato rimosso dalla lista, ma sarebbe stato assegnato alla variabile x.
- remove(oggetto): rimuove dalla lista la prima istanza dell'elemento passato come argomento.
invitati.remove('Angelo')
print(invitati)
Risultato
['Giovanni', 'Michelangelo', 'Paola', 'Riccardo']
- index(valore): restituisce l’indice della prima occorrenza dell'elemento specificato.
print(invitati.index('Michelangelo'))
Risultato
1
cioè in seconda posizione.
extend(lista): aggiunge gli elementi di una lista alla lista corrente.
invitati.extend(['Angelo', 'Federico', 'Aurora'])
print(invitati)
Risultato
['Giovanni', 'Michelangelo', 'Paola', 'Riccardo', 'Angelo', 'Federico', 'Aurora']
- copy(): restituisce una copia della lista.
copia_invitati = invitati.copy()
print(copia_invitati)
Alternativa
copia = invitati[:]
print(copia)
print(invitati)
Risultato
['Giovanni', 'Michelangelo', 'Paola', 'Riccardo', 'Angelo', 'Federico', 'Aurora'] ['Giovanni', 'Michelangelo', 'Paola', 'Riccardo', 'Angelo', 'Federico', 'Aurora']
- clear(): svuota la lista.
invitati.clear()
print(copia)
print(invitati)
Due alternative:
- con l'operatore del
del invitati[:]
print(copia)
print(invitati)
- assegnando una lista vuota
invitati[:] = [ ]
print(copia)
print(invitati)
Risultato
['Giovanni', 'Michelangelo', 'Paola', 'Riccardo', 'Angelo', 'Federico', 'Aurora']
[ ]
La lunghezza di una lista
Anche per determinare la lunghezza di una lista è possibile utilizzare la funzione len() cui abbiamo fatto ricorso per determinare la lunghezza di una stringa; con una differenza però: una lista annidata viene contata come un solo elemento, indipendentemente dal numero degli elementi di cui è costituita.
Nei cicli è preferibile usare come parametro la funzione len(), piuttosto che un valore costante, come limite superiore; ciò consente una generalizzazione poiché si evita di apportare modifiche se dovesse cambiare la lunghezza della lista. Occorre ribadire ancora una volta che l'ultimo elemento della lista di lunghezza x, occupa la posizione x-1, e non x, sempre perché il conteggio parte da 0 e non da 1.
List comprehensions
È una sintassi che permette di per creare una lista basandosi su altre liste, comprimendo un’iterazione e una trasformazione su di esse in una sola riga di codice.
Una list comprehension (comprensione di lista in Italiano3) è creata utilizzando parentesi quadre con all'interno una espressione ed un ciclo for , opzionalmente con if se necessari.
Esempio
Scrivere un programma che, partendo dalla lista
lista1 = ['Barletta', 'Andria', 'Trani', 'Corato', 'Canosa']
ne costruisca una seconda contenente, nell'ordine, la lunghezza degli elementi della prima.
Una prima soluzione
lista1 = ['Barletta', 'Andria', 'Trani', 'Corato', 'Canosa']
lista2 = [ ]
for stringa in lista1:4
lista2.append(len(stringa))
print(lista2)
[8, 6, 5, 6, 6]
Una seconda soluzione con una list comprehension:
lista1 = ['Barletta', 'Andria', 'Trani', 'Corato', 'Canosa']
print([len(parola) for parola in lista1])
[8, 6, 5, 6, 6]
�Esercizio
Creare una lista contenente i quadrati degli elementi della lista [1,2,3,4,5,6,7,8,9,10]
Una possibili soluzione:
basi=[1,2,3,4,5,6,7,8,9,10]
quadrati=[n**2 for n in basi]
print(quadrati)
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
Esempio con l'if
Creare una lista contenente i quadrati dei numeri pari della lista [1,2,3,4,5,6,7,8,9,10]
basi=[1,2,3,4,5,6,7,8,9,10]
quadrati=[n**2 for n in basi if n % 2 == 0]
print(quadrati)
[4, 8, 12, 16, 20]
______________________
NOTE
1 Si comporta con gl'indici come visto nelle stringhe
2 Per approdimenti della funzione sorted:
https://www.tuttofaredigitale.it/python-funzioni-integrate/python-sorted
https://www.andreaminini.com/python/funzione-sorted-python
3 Per alcuni, più che di comprensione di lista, si dovrebbe parlare di compressione!
4 Esegui i comandi che seguono per ogni elemento della lista, la prima volta per quello di indice 0, la seconda con quello di indice 1 e così via fino all'ultimo elemento della lista.