Conteggio degli elementi in una lista in Python
Un'altra operazione fondamentale che è possibile applicare ad una lista in Python è il conteggio degli elementi o enumerazione degli elementi. In generale, non si tratta semplicemente di sapere quanti elementi sono presenti in una lista, ma di sapere quanti elementi soddisfano una certa condizione.
In questa lezione vedremo ben tre modi per effettuare operazioni di conteggio in Python: la funzione len
, il metodo count
e le comprensioni di lista.
Operazioni di Conteggio per le liste
Abbiamo visto, nelle lezioni precedenti, che una lista è un contenitore di elementi o oggetti e che, in particolare, si tratta di una sequenza ordinata. In quanto contenitori mutabili abbiamo visto le operazioni più comuni per aggiungere, rimuovere e modificare gli elementi di una lista.
Adesso vedremo una serie di operazioni che è possibile effettuare su di una lista per contare o enumerare gli elementi. Partiamo dalla definizione:
Conteggio o Enumerazione
L'operazione di conteggio, o operazione di enumerazione, può essere intesa come una funzione che prende in ingresso un contenitore, quale è una lista, e una condizione e restituisce un numero intero che rappresenta il numero di elementi che soddisfano la condizione.
Formalmente, la funzione di conteggio può essere definita come segue. Dato un contenitore
Sia data una condizione, ossia una funzione che prende in ingresso un elemento
La funzione di conteggio,
Ossia, la funzione di conteggio prende in ingresso il contenitore
Nel caso in cui la condizione è assente oppure è sempre vera, la funzione di conteggio restituisce semplicemente il numero di elementi presenti nella lista.
In Python esistono vari modi per effettuare operazioni di conteggio. Vediamo quali sono.
Conteggio con la funzione len
Abbiamo già visto nella funzione sulle operazioni di base per le liste la funzione len
che restituisce il numero di elementi presenti in una lista.
Tale funzione può essere vista come un'operazione di conteggio in cui la condizione è sempre vera, pertanto restituisce semplicemente il numero di elementi presenti nella lista.
Vediamo un esempio:
>>> lista = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> len(lista)
10
Conteggio con la funzione count
In Python è presente un metodo delle liste, count
, che permette di effettuare operazioni di conteggio. Tale metodo prende in ingresso un elemento e restituisce il numero di volte che tale elemento è presente nella lista.
Vediamo un esempio:
>>> lista = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> lista.count(5)
1
In questo caso, quando si usa il metodo count
la condizione equivale all'uguaglianza tra l'elemento passato come parametro e gli elementi della lista. Internamente, l'interprete Python scorre la lista e controlla se l'elemento passato come parametro è uguale ad ogni elemento della lista. Se l'uguaglianza è vera, allora il contatore viene incrementato di uno.
Possiamo, infatti, implementare il metodo count
in Python come segue:
def count(lista, elemento):
contatore = 0
for elemento_lista in lista:
if elemento == elemento_lista:
contatore += 1
return contatore
Proviamo ad applicare il metodo count
ad una lista di stringhe:
>>> lista = ["ciao", "come", "va", "ciao", "come", "va"]
>>> lista.count("ciao")
2
Il fatto che il metodo count
utilizzi internamente l'operatore di uguaglianza è un dettaglio molto importante. Vedremo in seguito, infatti, quando studieremo gli oggetti che se non è definito tale operatore per i nostri oggetti oppure se è definito in modo diverso, il metodo count
non funzionerà come ci aspettiamo.
Ricapitolando:
Metodo count
per le liste
Il metodo count
è un metodo delle liste che prende in ingresso un elemento e restituisce il numero di volte che tale elemento è presente nella lista.
Quando effettua il conteggio, il metodo count
utilizza l'operatore di uguaglianza, ==
, per controllare se l'elemento passato come parametro è uguale ad ogni elemento della lista. Se l'uguaglianza è vera, allora il contatore viene incrementato di uno.
Conteggio usando le Comprensioni di Lista
Il metodo count
permette di effettuare operazioni di conteggio, ma nella sua funzionalità è limitato in quanto sfrutta semplicemente l'uguaglianza.
Immaginiamo una lista di numeri come la seguente:
>>> lista = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Supponiamo di voler contare il numero di elementi maggiori o uguali a 5. Con il metodo count
non possiamo farlo. Una prima soluzione è quella di utilizzare un ciclo for
:
contatore = 0
for elemento in lista:
if elemento >= 5:
contatore += 1
Possiamo, tuttavia, utilizzare le Comprensioni di Lista per ottenere lo stesso risultato. Ad esempio, possiamo scrivere:
contatore = len([elemento for elemento in lista if elemento >= 5])
In questo caso, abbiamo usato, dapprima, la comprensione di lista per creare una nuova lista che contiene solo gli elementi maggiori o uguali a 5. Successivamente, abbiamo utilizzato la funzione len
per ottenere il numero di elementi presenti nella lista.
Proviamo con un altro esempio. Supponiamo di voler contare il numero di stringhe presenti in una lista che iniziano con la lettera c
. Possiamo scrivere:
lista = ["ciao", "come", "va", "ciao", "come", "va"]
contatore = len([elemento for elemento in lista if elemento[0] == "c"])
Ricapitolando:
Conteggio con la Comprensione di Liste
Per effettuare l'operazione di conteggio sfruttando la Comprensione di Liste, possiamo usare lo schema seguente:
contatore = len([elemento for elemento in lista if condizione])
In Sintesi
In questa lezione ci siamo concentrati sull'operazione generale di conteggio di elementi di una lista. Abbiamo visto che l'operazione di conteggio restituisce il numero di elementi che soddisfano una condizione. In Python esistono tre modi per effettuare operazioni di conteggio:
- La funzione
len
che restituisce il numero di elementi presenti nella lista; in tal caso la condizione è sempre vera; - Il metodo
count
che restituisce il numero di volte che un elemento è presente nella lista; in tal caso la condizione è l'uguaglianza; - Le Comprensioni di Lista che offrono la maggiore flessibilità.