Découvrez la fonction len en Python

La fonction len est un outil essentiel dans la boîte à outils de tout développeur Python.

Elle permet de déterminer rapidement et facilement la taille de divers types de collections en Python, tels que les chaînes de caractères, les listes et les dictionnaires.

Dans cet article, nous aborderons la syntaxe de la fonction len, comment l'utiliser avec différentes collections, comment éviter les erreurs courantes et comment implémenter la méthode __len__ sur vos propres classes.

De plus, nous examinerons plusieurs exemples concrets qui illustrent comment cette fonction peut être utilisée.

Quelle est la syntaxe de len?

La syntaxe de la fonction len est simple.

taille = len(collection)

collection représente un itérable dont vous voulez connaître la taille, et taille est la variable qui stocke la taille de cet itérable.

Comment utiliser len sur des itérables ?

La fonction len peut être utilisée avec plusieurs types de collections en Python.

Voici des exemples pour les chaînes de caractères, les listes, les tuples et les dictionnaires:

# Chaînes de caractères
texte = "Bonjour le monde"
taille_texte = len(texte)
print(taille_texte)  # 16

# Listes
liste = [1, 2, 3, 4, 5]
taille_liste = len(liste)
print(taille_liste)  # 5

# Tuples
tuple = (1, 2, 3, 4, 5)
taille_tuple = len(tuple)
print(taille_tuple)  # 5

# Dictionnaires
dictionnaire = {'un': 1, 'deux': 2, 'trois': 3}
taille_dictionnaire = len(dictionnaire)
print(taille_dictionnaire)  # 3

Remarquez que dans le cas d'un dictionnaire, la fonction len nous retourne le nombre de paires clé:valeur contenues dans le dictionnaire.

Il faut noter également que la fonction len ne retourne que le nombre d'éléments de premier niveau :

liste = [1, 2, [3, 4]]
taille_liste = len(liste)
print(taille_liste)  # 3

Comment éviter les erreurs?

Certaines erreurs courantes lors de l'utilisation de la fonction len sont les suivantes:

  • Utiliser len avec des objets qui ne sont pas des itérables (ex: nombres entiers ou décimaux)
  • Oublier de définir la collection avant d'appeler len (ce qui résultera en un NameError)

Comment implémenter len sur une classe ?

Pour permettre à la fonction len d'être utilisée avec des instances de vos propres classes, vous devez implémenter la méthode spéciale __len__.

Voici un exemple d'une classe Panier qui implémente cette méthode :

class Panier:
    def __init__(self):
        self.articles = []

    def ajouter_article(self, article):
        self.articles.append(article)

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

Maintenant, vous pouvez utiliser la fonction len avec des instances de la classe Panier :

class Panier:
    def __init__(self):
        self.articles = []

    def ajouter_article(self, article):
        self.articles.append(article)

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

panier = Panier()
panier.ajouter_article("pomme")
panier.ajouter_article("banane")

print(len(panier))  # Résultat: 2

Exemple concret d'utilisation de len

Dans cette section, nous allons examiner comment utiliser la fonction len dans un cas concret.

Imaginons que nous ayons une liste de tâches à accomplir et que nous voulions créer une fonction pour afficher le pourcentage d'avancement basé sur le nombre de tâches terminées.

taches = [
    {"nom": "Faire les courses", "termine": True},
    {"nom": "Nettoyer la cuisine", "termine": False},
    {"nom": "Arroser les plantes", "termine": True},
    {"nom": "Appeler le plombier", "termine": False},
]

def pourcentage_avancement(taches):
    termine = [tache for tache in taches if tache["termine"]]
    return (len(termine) / len(taches)) * 100

print(pourcentage_avancement(taches))  # Résultat: 50.0

Dans cet exemple, nous utilisons la fonction len pour calculer le nombre total de tâches et le nombre de tâches terminées, puis nous calculons le pourcentage d'avancement en divisant le nombre de tâches terminées par le nombre total de tâches.