In Python le liste sono elenchi ordinati di elementi, che possono essere anche di diverso tipo.
Definiamo una semplice lista contenente qualche valore numerico a caso:
Dunque bisogna prestare attenzione ai caratteri “[” e “]”: sono proprio le parentesi quadre che indicano a Python di creare una lista.
Ma, come abbiamo detto, le liste possono contenere anche elementi di diverso tipo, ecco un esempio:
Questo è un esempio più interessante.
Nella nostra lista varie: il primo elemento è un numero, il secondo una stringa, il terzo addirittura un’altra lista!
Adesso per visualizzarne il contenuto:
Aggiungere un elemento
Se vogliamo esagerare:
Ora la nostra lista contiene: un valore numerico, una stringa, un’altra lista e addirittura una libreria importata!
E’ probabilmente inutile importare un modulo in una lista, ma ci è servito per intravedere il funzionamento del metodo append che aggiunge un elemento in fondo alla lista.
In Python il punto separa un oggetto da un suo attributo o da un suo metodo.
Estrarre un elemento
Ora che abbiamo imparato a creare liste, è bene sapere come poter estrarre un determinato elemento.
Per estrarre l’elemento nella prima posizione abbiamo usato l’indice 0.
Questo perché in Python la numerazione delle posizioni all’interno di una lista parte da 0: data una lista di n elementi, questa va da 0 a n-1.
Cosa succede se inseriamo un indice che non esiste?
Viene scatenato un errore, o meglio, un’eccezione (di cui parleremo in seguito):
L’errore “list index out of range” sta proprio ad indicare che l’indice utilizzato si trova al di fuori della dimensione della lista.
Estrarre un elemento in ultima posizione
Per estrarre un elemento che si trova in ultima posizione abbiamo due possibilità:
1) Se conosciamo la lunghezza della lista, possiamo direttamente indicare l’indice dell’ultimo elemento;
2) In alternativa possiamo utilizzare l’indice -1.
Python sa che quando l’indice è negativo deve partire dal fondo.
Gli elementi di una lista di lunghezza n possono essere individuati in ordine inverso con un indice che va da -1 a -n.
Funzione len: lunghezza di una lista
Per conoscere la dimensione di una lista, esiste la funzione len che ne restituisce la lunghezza:
Estrarre piu’ elementi
Per estrarre più elementi in un solo colpo basta specificare due indici separandoli con il simbolo “:”.
Possiamo anche usare indici negativi con il simbolo “:” :
Si può persino omettere uno dei valori a sinistra o a destra del simbolo: in tal caso Python raggiunge automaticamente il primo o l’ultimo indice della lista.
Quest’ultimo esempio è da tenere a mente!
E’ il metodo più semplice e veloce per duplicare una lista:
Questo particolare metodo di accesso è detto “slicing” (dall’inglese to slice, “affettare”): è uno degli aspetti che rende Python piacevole da utilizzare.
Lo slicing e i suoi utilizzi
Altri linguaggi di programmazione utilizzano diverse modalità di accesso agli elementi di una lista.
Talvolta lo slicing di Python può risultare complicato.
Ma possiamo aiutarci con il seguente schema:
Dobbiamo immaginare non tanto gli elementi, quanto le posizioni che li delimitano.
In questo modo è più facile ricordare quali sono gli indici da utilizzare.
Lo slicing può essere utilizzato anche per assegnare in un colpo solo più elementi di una lista:
Oppure per inserire nuovi elementi:
Abbinando fra loro questi esempi, possiamo immaginare come cancellare ad esempio gli ultimi due elementi di una lista:
Metodi per le liste
Abbiamo già intravisto in questo articolo il metodo append, ma quali altri metodi possono essere applicati ad una lista?
Lo scopriamo con il nostro vecchio amico dir:
Ignoriamo gli attributi che iniziano e terminano con la sequenza “__” ed analizziamo gli altri: ‘append’, ‘clear’, ‘copy’, ‘count’, ‘extend’, ‘index’, ‘insert’, ‘pop’, ‘remove’, ‘reverse’, ‘sort’.
Il metodo insert
Sappiamo già utilizzare il metodo append, che consente di aggiungere un nuovo elemento in fondo alla lista.
Il metodo insert permette di inserire un elemento nella posizione desiderata:
Per inserire un elemento in fondo alla lista possiamo usare un numero qualsiasi, uguale o maggiore rispetto alla lunghezza della lista:
Metodo extend
Il metodo extend accetta come parametro una seconda lista e la aggiunge in fondo a quella principale.
La differenza tra il metodo instert ed il metodo extend è evidente:
1) il primo aggiunge in fondo alla lista un elemento semplice
2) il secondo aggiunge in fondo alla lista principale, un’intera lista
In pratica è un po’ come usare un append per ogni elemento della lista da aggiungere.
Metodo remove
Il metodo remove rimuove l’elemento passato come parametro:
Ma se l’elemento non esiste viene lanciata un’eccezione:
Il metodo pop
Il metodo pop è un metodo particolare: abbina l’estrazione alla rimozione di un elemento da una lista.
Può essere usato con o senza indice, in quest’ultimo caso estrae l’ultimo elemento della lista:
Il metodo count
Il metodo count conta gli elementi della lista che sono uguali al parametro passato:
ATTENZIONE: count non esplora ricorsivamente eventuali liste presenti all’interno della lista principale.
Esempio:
Il metodo index
Il metodo index restituisce la posizione all’interno della lista dell’elemento passato come parametro:
ATTENZIONE: se l’elemento non esiste viene scatenata un’eccezione.
Metodo reverse
Il metodo reverse, come si può immaginare dal nome, inverte semplicemente una lista:
Metodo sort
Il metodo sort dispone invece in ordine alfabetico e/o numerico gli elementi della lista:
ATTENZIONE: se utilizziamo il metodo sort con una lista di valori eterogenei scateneremo un’eccezione.
Esempio:
Le list comprehension
La list comprehension è un costrutto sintattico che permette di creare nuove liste a partire da altre liste.
In pratica permette di creare una lista applicando una funzione agli elementi di un’altra lista.
Vediamo un esempio:
Possiamo anche scegliere quali elementi inserire nella lista creata, come ad esempio i numeri pari:
La list comprehension può anche essere “nidificata”.
Ad esempio, se volessimo creare una matrice identità, ovvero una matrice di n per n elementi tutti uguali a zero, tranne la diagonale composta da un’unità, potremmo utilizzare due list comprehension, una dentro l’altra:
Non temete se i costrutti appena utilizzati vi sembrano incomprensibili, ne parleremo dettagliatamente in seguito.
Adesso che conosciamo le liste e i principali metodi ad esse correlati, possiamo proseguire con gli altri tipi di dati che ci offre il nostro buon Python!
Segui la nostra guida alla programmazione con Python, a seguire: stringhe, tuple, insiemi, dizionari e dati numerici.
Continua a seguirci e iscriviti alla nostra newsletter per rimanere aggiornato!
Una risposta
I commenti sono chiusi.