pugliasos newlogoDEF

Orario della segreteria: tutti i martedì, dalle ore 17 alle 19, su appuntamento.

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
print(c)
['Giovanni', 'Michelangelo', 'Riccardo', 'Angelo', 'Giuseppe']

Lista ripetuta

*

c = daInvitare * 4
print(c)
['Giuseppe', 'Giuseppe', 'Giuseppe', 'Giuseppe']

Porzione1

[n1: n2]

c = invitati[1:3]
print(c)
['Michelangelo', 'Riccardo']

 

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.

Save
Cookies user preferences
We use cookies to ensure you to get the best experience on our website. If you decline the use of cookies, this website may not function as expected.
Accept all
Decline all
Read more
Analytics
Tools used to analyze the data to measure the effectiveness of a website and to understand how it works.
Google Analytics
Accept
Decline