python-abc

Se vuoi imparare Python parti dall'ABC

View project on GitHub

Tipi: Liste

Se immagini una variabile come una scatola in cui puoi mettere un contenuti, una lista la puoi immaginare come una fila di box.

Una lista vuota si crea utilizzando le parentesi quadre

>>> li = []

Ora la nostra variabile li è un oggetto di tipo list

>>> type(li)
<class 'list'>

È possibile anche inizializzare una lista già contenente dei dati

>>> other_li = [4, 5, 6]

Si può aggiungere un valore alla fine della lista con append

>>> li.append(10)
>>> li
[7]
>>> li.append(20)
>>> li.append(30)
>>> li.append(40)
>>> li.append(50)
>>> li
[10, 20, 30, 40, 50]

Si può rimuovere un valore dalla fine della lista con pop

>>> li.pop()
50
>>> li
[10, 20, 30, 40]

In questo momento abbiamo una lista con tre valori, ognuno di questi dati è in una posizione specifica. Nelle liste si comincia a contare da zero, quindi avremo il numero 10 nella posizione zero, il numero 20 nella posizione uno e così via.

Per accedere ai dati si usa la sintassi nome_lista[indice]

>>> li[0]
10
>>> li[1]
20

Per guardare l’ultimo elemento della lista:

>>> li[-1]
40

Guardare al di fuori dei limiti genera un IndexError

>>> li[8]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

Notazione slice

La notazione slice, a fetta, permette di “guardare” un intervallo di dati nelle liste.

La sintassi della notazione è lista[from:to:step]

  • from è l’elemento da cui cominciare a estrapolare gli elementi, ricorda che inizia da zero.
  • to è quello a cui arrivare -1
  • step indica ogni quanti elementi restituirne uno
Slice Descrizione Esempio con li=[10,20,30,40]
lista[from:to] gli elementi da from fino a to-1 li[1:3] -> [20,30]
lista[from:] gli elementi da from fino alla fine della lista li[2:] -> [30,40]
lista[:to] gli elementi dall’inizio fino all’elemento to-1 li[:3] -> [10, 20,30]
lista[:] tutti gli elementi li[:] -> [10,20,30,40]
lista[from:to:step] un elemento ogni step da from fino a to-1 li[0:3:2] -> [10,30]
lista[from::step] un elemento ogni step da from fino alla fine della lista li[1::2] -> [20,40]
lista[:to:step] un elemento ogni step dall’inizio fino all’elemento to-1 li[:3:2] -> [10,30]
lista[::step] un elemento ogni step li[::2] -> [10,30]

Si può usare passo negativo per scorrere in modo inverso la lista

>>> li[::-1]
[40, 30, 20, 10]

E’ possibile creare una copia della lista (one layer deep copy) usando la sintassi slices

>>> li2 = li[:]
>>> li2
[10, 20, 30, 40]

Rimozione di elementi

Rimuovi arbitrariamente elementi da una lista con del

>>> del li[2]
>>> li
[10, 20, 40]

Rimuove la prima occorrenza di un valore

>>> li.remove(20)
>>> li
[10, 40]

Cercare di rimuovere un valore non contenuto nella lista genera un ValueError

>>> li.remove(20)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list

Inserimento elementi

Inserisce un elemento all’indice specificato

>>> li.insert(1, 20)
>>> li
[10, 20, 40]

Index

Restituisce l’indice della prima occorrenza dell’elemento fornito

>>> li.index(40)
2

Richiedere l’indice di un valore non presente nella lista genera un ValueError

>>> li.index(240)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: 240 is not in list

Unire le liste

È possibile unire due o più liste

>>> li + other_li
[10, 20, 40, 4, 5, 6]

È possibile concatenare una lista ad un’altra con il metodo extend

>>> li.extend(other_li)
>>> li
[10, 20, 40, 4, 5, 6]

Controlli

Controlla l’esistenza di un valore in una lista con l’operatore in

>>> 4 in li
True
>>> 22 in li
False

Esamina la lunghezza con la funzione len()

>>> len(li)
6

This content is a derivative of “Learn X in Y minutes” by adambard, used under a CC BY-SA 3.0 license.