Vai al contenuto principale

Python len(): una guida per principianti al conteggio degli elementi in Python

Scopri come usare la funzione Python len() per trovare rapidamente la dimensione di stringhe, liste, dizionari e altre strutture dati. Esplora esempi pratici ed errori comuni da evitare quando usi len() nel tuo codice.
· 6 min leggi

Scopri con l'IA

La funzione len() è uno dei primi strumenti su cui gli sviluppatori Python fanno affidamento per ispezionare i dati. È quasi certo che tu abbia già incontrato len() se stai seguendo il nostro corso Introduction to Python for Developers o il percorso di competenze Python Programming Fundamentals.

In questo articolo, ti mostrerò come funziona len() in Python sui tipi di dato più comuni e a cosa fare attenzione quando qualcosa va storto.

Cosa fa la funzione Python len()?

Puoi usare la funzione built-in len() di Python ogni volta che ti serve verificare quanti elementi contiene qualcosa. Penso, ad esempio, a contare il numero di elementi in una lista o il numero di caratteri in una stringa. Puoi usarla anche per contare le chiavi in un dizionario. Le possibilità sono tante.

Ecco come usarla nella forma più basilare:

len(object)

Metti semplicemente ciò che vuoi misurare (come le cose elencate sopra) al posto di object.

Usare len() con i tipi di dato comuni di Python

Ho elencato alcuni casi d’uso comuni sopra, ma erano un po’ astratti. Vediamo esempi pratici per rendere più chiaro il valore di len().

Contare i caratteri in una stringa

Supponiamo che tu voglia conoscere la lunghezza esatta di un testo, inclusi tutti gli spazi e i segni di punteggiatura:

word = "Josef"
print(len(word))

Stampa 5, dato che la parola "Josef" (con una "f") è composta da cinque caratteri.

Verificare il numero di elementi in una lista

Se vuoi scoprire quanti elementi contiene una lista, usa questo:

numbers = [10, 20, 30, 40, 50]
print(len(numbers))

Qui vedrai come output 5.

Ottenere la dimensione di una tupla

Le tuple, proprio come le liste, raggruppano elementi ma sono immutabili, cioè non possono essere modificate dopo la creazione. len() funziona anche qui:

dimensions = (1920, 1080)
print(len(dimensions))

Questo produce 2, dato che la tupla contiene due elementi.

Contare le chiavi in un dizionario

I dizionari Python sono basati su coppie chiave-valore. Quando usi len() su un dizionario, vengono contate solo le chiavi:

person = {"name": "Alice", "age": 30, "city": "Paris"}
print(len(person))

Quindi ottieni 3 (una per ogni chiave).

Verificare gli elementi unici in un set

I set sono utili quando vuoi memorizzare solo elementi unici. len() te lo dirà:

colors = {"red", "green", "blue", "red"}
print(len(colors))

Questo restituisce 3, poiché "red" appare due volte ma viene contato una sola volta.

Come funziona len() dietro le quinte

Potresti chiederti, come ho fatto io, come len() determini effettivamente la dimensione.

Sotto il cofano, quando chiami len() su un oggetto, Python cerca il metodo __len__ di quell’oggetto. I tipi built-in come liste, stringhe e dizionari hanno tutti questo metodo.

Sapere questo ci dice che, se creiamo una tua classe e vogliamo che len() funzioni con essa, dobbiamo definire noi stessi un metodo __len__:

class Box:
    def __init__(self, items):
        self.items = items

    def __len__(self):
        return len(self.items)

my_box = Box(["apple", "banana", "orange"])
print(len(my_box))

Qui len() restituisce 3, perché la scatola contiene tre elementi. Proprio come con liste e stringhe, len() si adatta purché l’oggetto fornisca un metodo __len__.

Cosa succede quando len() non funziona?

Ovviamente, non tutto in Python ha una lunghezza. Se provi a usare len() su qualcosa che non lo supporta (te lo mostrerò tra un attimo con un tipo di dato int) Python te lo segnalerà con un TypeError. È un classico in cui si incappa, soprattutto quando si lavora con tipi di dato misti. Per esempio:

num = 42 
print(len(num))

Questo genera il seguente errore:

TypeError: object of type 'int' has no len()

Ogni volta che lo vedi, ricontrolla che l’oggetto che stai misurando sia davvero un contenitore o una sequenza (stringa, lista o dizionario) e non un singolo valore come un intero o un float.

Alcuni utili casi d’uso di len()

Non proviamo a forzare gli esempi: rendiamoli più simili a situazioni reali di programmazione.

Iterare con range

Quando hai bisogno di iterare su una lista usando gli indici, len() ti aiuta a impostare l’intervallo corretto per il ciclo:

fruits = ["apple", "banana", "cherry"]

for i in range(len(fruits)):
    print(f"Index {i}: {fruits[i]}")

Questo stampa ogni frutto insieme al suo indice, dandoti sia ordine che contesto.

Index 0: apple
Index 1: banana
Index 2: cherry

Verificare contenitori vuoti

Spesso vorrai sapere se un contenitore—come una lista o un dizionario—è vuoto prima di procedere:

cart = []

if len(cart) == 0:
    print("Your shopping cart is empty.")

Questo schema ti aiuta a evitare errori o elaborazioni inutili quando non c’è nulla su cui lavorare.

Troncare stringhe troppo lunghe

Se gestisci input utente o etichette da mostrare, potresti voler limitare la lunghezza delle stringhe. len() ti aiuta a far rispettare questi limiti:

username = "superlongusername"

if len(username) > 10:
    username = username[:10]
    print(username)

Qui, qualsiasi username più lungo di 10 caratteri viene accorciato.

Errori comuni con len()

len() può trarti in inganno, anche se hai già un po’ di esperienza con Python:  

  • Provare a usare len() su interi o float: i numeri non sono collezioni, quindi non hanno una lunghezza.

  • Dimenticare che len() conta gli elementi, non i valori: in un dizionario, len conta le chiavi—anche se più chiavi puntano allo stesso valore.

  • Dare per scontato che len() funzioni su tutto: le classi personalizzate hanno bisogno di un metodo __len__; altrimenti len() non saprà cosa fare.

Cerca di ricordare queste regole per risparmiare tempo nel debug.

Gestione degli errori con len()

Dato che len() può generare un TypeError se usata male, è saggio preparare il codice a questa eventualità, soprattutto quando si lavora con dati imprevedibili. Un blocco try-except è un modo semplice per gestire questi errori con eleganza:

data = 123

try:
    print(len(data))
except TypeError:
    print("Object has no length.")

Invece di bloccarsi, il programma ora stampa un messaggio amichevole. Il nostro corso Object-Oriented Programming in Python è un’ottima risorsa per diventare bravi in questo genere di cose. 

Usare len() con classi personalizzate

Torniamo alle classi personalizzate. Una classe personalizzata è qualsiasi classe che definisci tu stesso usando la keyword class—ad esempio quando modelli qualcosa di specifico per il tuo programma, come una Team, una Box o una Library. In precedenza, hai visto che len() funziona sui tipi built-in come liste e dizionari perché implementano un metodo speciale chiamato __len__(). Lo stesso vale per le tue classi. Se vuoi che len() funzioni su di esse, devi definire tu stesso __len__().

Non voglio appesantirti con un dettaglio tecnico. Penso valga la pena menzionarlo perché è importante quando costruisci contenitori di dati personalizzati che dovrebbero comportarsi come le collezioni native di Python. Supportando len(), i tuoi oggetti possono interagire in modo più naturale con il resto dell’ecosistema Python, incluse altre funzioni e librerie.

Ecco un rapido riepilogo:

class Team:
    def __init__(self, players):
        self.players = players

    def __len__(self):
        return len(self.players)

my_team = Team(["Alice", "Bob", "Cathy"])
print(len(my_team))

Di nuovo, len() restituisce 3, che è la risposta giusta dato che questo è il numero di giocatori nel tuo team.

Conclusione

La prossima volta che devi contare, misurare o verificare la dimensione di qualcosa in Python, ricorda che len() è un’ottima opzione.

Ma ora che siamo arrivati alla fine, voglio menzionare un’altra cosa importante. Ci siamo concentrati su una funzione, ma in Python quasi sempre esistono diversi modi per ottenere lo stesso risultato. Abbiamo un articolo che mostra persino molti metodi diversi per trovare la lunghezza di una lista, di cui la funzione len() è solo una delle opzioni: Python List Size: 8 Different Methods for Finding the Length of a List in Python.

Continua a praticare nuovi metodi. È un modo sicuro per diventare un programmatore più forte. E ricorda di iscriverti al nostro percorso di competenze Python Programming, che ti insegnerà a ottimizzare il codice, scrivere funzioni e test, e molto altro.

Josef Waples

Autore

Josef Waples

Sono uno scrittore e editor di data science, con contributi a articoli di ricerca su riviste scientifiche. Sono particolarmente interessato ad algebra lineare, statistica, R e affini. Inoltre, gioco anche parecchio a scacchi! 

Argomenti

Correlato