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]
20Per guardare l'ultimo elemento della lista:
>>> li[-1]
40Guardare 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 rangeLa 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 -1stepindica 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]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 listInserisce un elemento all'indice specificato
>>> li.insert(1, 20)
>>> li
[10, 20, 40]Restituisce l'indice della prima occorrenza dell'elemento fornito
>>> li.index(40)
2Richiedere 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È 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]Controlla l'esistenza di un valore in una lista con l'operatore in
>>> 4 in li
True
>>> 22 in li
FalseEsamina la lunghezza con la funzione len()
>>> len(li)
6This content is a derivative of "Learn X in Y minutes" by adambard, used under a CC BY-SA 3.0 license.