Introduzione alle Liste in Python

In questa lezione introduttiva inizieremo a studiare le liste in linguaggio Python. In particolare vedremo le caratteristiche fondamentali che le contraddistinguono dalle altre strutture dati che vedremo in seguito. Esse sono assimilabili agli array forniti in altri linguaggi di programmazione, ma sono molto più potenti e flessibili.

Vedremo che le liste possono contenere oggetti di tipo diverso e possono essere modificate dopo la loro creazione.

Ci concentreremo, inoltre, su come crearle, come accedere ai singoli elementi e come modificare gli elementi che contengono.

Caratteristiche di una Lista

Le liste sono una delle strutture dati più utilizzate in Python. Una lista può contenere un numero arbitrario di elementi, di qualsiasi tipo, e questi elementi possono essere acceduti tramite un indice. Le liste sono molto simili agli array di altri linguaggi di programmazione, tanto è vero che esse vengono utilizzate al loro posto in Python.

La caratteristica fondamentale di una lista è quella di essere mutabile, ovvero una volta creata, è possibile aggiungere, rimuovere o modificare gli elementi che essa contiene.

Attraverso una lista è possibile svolgere operazioni che, tipicamente, in altri linguaggi di basso livello bisognerebbe implementare a mano.

Le principali proprietà di una lista sono:

  • Una lista è ordinata:

    Una lista è a tutti gli effetti una sequenza, motivo per cui gli elementi che essa contiene sono ordinati. Un elemento di una lista può avere un altro elemento che lo precede (escluso il primo), e un altro che lo segue (escluso l'ultimo). In altre parole, dire che una lista è ordinata significa che gli elementi che essa contiene sono disposti in un certo ordine, e che questo ordine non cambia a meno che non venga modificata la lista stessa.

  • Si accede con un indice:

    Per accedere ad un elemento di una lista, è sufficiente indicare l'indice dell'elemento che si vuole ottenere. L'indice di un elemento è la sua posizione all'interno della lista. L'indice di un elemento è un numero intero che va da 0 a fino alla lunghezza della lista meno 1. Pertanto il primo elemento avrà sempre indice 0.

  • Una lista è mutabile:

    Una volta creata, è possibile aggiungere, rimuovere o modificare gli elementi che essa contiene. Pertanto, la dimensione, ossia la lunghezza, di una lista non è fissata a priori.

  • Una lista può contenere elementi eterogenei:

    Una lista può contenere elementi di qualsiasi tipo, e questi possono essere anche di tipo diverso tra loro. Dal momento che non vi sono vincoli sul tipo di dati che una lista contiene, essa può contenere altre liste a sua volta; in tal modo si possono creare liste innestate, ovvero liste di liste.

  • Una lista può contenere elementi duplicati:

    Una lista può contenere elementi duplicati, ovvero elementi che hanno lo stesso valore. In tal caso, gli elementi duplicati sono considerati come elementi distinti.

  • Gli elementi di una lista sono memorizzati per riferimento:

    Quando si inserisce un elemento in una lista, non ne viene memorizzato il valore (a meno che non sia un elemento di un tipo semplice come un intero o un floating point), ma il suo riferimento. Questo significa che, se si modifica l'elemento, la modifica sarà visibile anche nella lista. In altre parole, una lista non contiene una copia degli elementi, ma solo i loro riferimenti. Pertanto, l'accesso agli elementi di una lista è un'operazione molto veloce.

Riassumendo, possiamo dire che:

Definizione

Liste

Una lista in linguaggio Python è una Sequenza Mutabile di oggetti eterogenei.

In quanto sequenza, una lista è ordinata e in quanto mutabile una lista può essere modificata dopo la sua creazione.

Creazione di una Lista

Vediamo, adesso, come possiamo creare una lista in Python. Per farlo, esistono due modi. Il primo consiste nel creare direttamente la lista racchiudendo gli elementi tra parentesi quadre, separati da virgole.

Ad esempio, se vogliamo creare una semplice lista di numeri interi possiamo scrivere in questo modo:

lista = [1, 2, 3, 4, 5]

In questo caso, la lista contiene 5 elementi, tutti di tipo int. Se vogliamo creare una lista di stringhe, possiamo scrivere:

lista = ["ciao", "come", "va"]

In questo caso, la lista contiene 3 elementi, tutti di tipo str.

Possiamo, come abbiamo detto prima, creare anche liste di oggetti di tipo differente tra di loro:

lista = [1, "ciao", 3.14, True]

In questo caso, la lista contiene 4 elementi, tutti di tipo diverso tra loro: un intero, una stringa, un numero in virgola mobile e un valore booleano.

Il secondo modo per creare una lista consiste nel utilizzare la funzione list(). Questa funzione accetta come argomento un oggetto iterabile, e restituisce una lista contenente gli elementi dell'oggetto iterabile stesso. Il concetto di oggetto iterabile è molto importante in python e lo studieremo nelle prossime lezioni. Per il momento vediamo un semplice esempio in cui creiamo una lista di numeri interi da 0 a 9 usando la funzione list() applicata sulla funzione range():

>>> x = list(range(10))
>>> print(x)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

In questo caso abbiamo creato una lista a partire dall'output della funzione range, che è un oggetto iterabile. Vedremo meglio cosa sono gli oggetti iterabili nelle prossime lezioni.

Possiamo anche creare una lista inizialmente vuota; basta semplicemente usare la sintassi seguente:

>>> lista = []
>>> print(lista)
[]
Definizione

Creazione di una lista

Per creare una lista in Python si può usare la seguente sintassi:

lista = [elemento1, elemento2, ..., elementoN]

oppure

lista = list(oggetto_iterabile)

Una lista può essere creata anche inizialmente vuota, usando la seguente sintassi:

lista = []

Accesso agli Elementi di una Lista

Come abbiamo detto, l'accesso agli elementi di una lista avviene attraverso un indice intero. Il primo elemento di una lista ha indice 0, il secondo ha indice 1, e così via. L'ultimo elemento di una lista ha indice pari alla lunghezza della lista meno 1.

Accedere ad un elemento di una lista è un'operazione molto semplice. Basta usare il nome della lista seguito dall'indice dell'elemento che si vuole ottenere, racchiuso tra parentesi quadre.

Ad esempio, supponiamo di avere la lista seguente:

>>> lista = [1, 2, 3, 4, 5]

Per accedere al primo elemento della lista, possiamo scrivere:

>>> print(lista[0])
1

Per accedere al secondo elemento della lista, possiamo scrivere:

>>> print(lista[1])
2

E così via.

Se proviamo ad accedere ad un elemento che non esiste, otterremo un errore:

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

Accesso agli elementi di una lista

Per accedere ad un elemento di una lista si usa la seguente sintassi:

elemento = lista[indice]

Indicizzazione negativa

Nell'accesso degli elementi di una lista si può utilizzare anche un indice negativo. In questo caso, l'indice negativo indica l'elemento contando da destra verso sinistra. L'ultimo elemento di una lista ha indice -1, il penultimo ha indice -2, e così via.

Ad esempio, supponiamo di avere la lista seguente:

>>> lista = [1, 2, 3, 4, 5]

Per accedere all'ultimo elemento della lista, possiamo scrivere:

>>> print(lista[-1])
5

Per accedere al penultimo elemento della lista, possiamo scrivere:

>>> print(lista[-2])
4

E così via.

Definizione

Indicizzazione negativa

Una lista in python può essere acceduta anche con indici negativi. In questo caso, l'indice negativo indica l'elemento contando da destra verso sinistra. L'ultimo elemento di una lista ha indice -1, il penultimo ha indice -2, e così via.

Modificare gli Elementi di una Lista

Quando accediamo ad un elemento di una lista, attraverso l'indicizzazione, possiamo anche modificarlo. Questo è possibile in quanto una lista è una struttura dati mutabile.

Per cui, se vogliamo modificare un elemento di una lista, possiamo semplicemente assegnare un nuovo valore all'elemento stesso.

Ad esempio, supponiamo di avere la lista seguente:

>>> lista = [1, 2, 3, 4, 5]

Se vogliamo modificare il primo elemento della lista, possiamo scrivere:

>>> lista[0] = 10
>>> print(lista)
[10, 2, 3, 4, 5]

Quindi l'accesso agli elementi di una lista avviene sia in lettura che in scrittura.

Definizione

Modifica degli elementi di una lista

Per modificare un elemento di una lista si usa la seguente sintassi:

lista[indice] = nuovo_valore

In Sintesi

In questa lezione introduttiva sulle liste in Python ci siamo concentrati sulle caratteristiche fondamentali di questo tipo di strutture dati. Abbiamo visto che una lista è una sequenza mutabile di elementi eterogenei e che, pertanto, possiede le seguenti caratteristiche:

  • è una sequenza ordinata di elementi;
  • gli elementi di una lista possono essere di tipo diverso tra loro;
  • gli elementi di una lista possono essere acceduti attraverso un indice intero;
  • gli elementi di una lista possono essere modificati.

Inoltre, abbiamo visto la sintassi per creare una lista, per accedere agli elementi e per modificarli.

Nella prossima lezione vedremo le operazioni principali che è possibile effettuare su una lista.