Cours
La fonction len()
est l'un des premiers outils sur lesquels les programmeurs Python s'appuient pour inspecter les données. Vous avez certainement déjà rencontré le site len()
si vous avez suivi notre cours Introduction à Python pour les développeurs ou notre parcours de compétences Fondamentaux de la programmation en Python.
Dans cet article, je vous montrerai comment len()
fonctionne en Python pour tous les types de données courants, et je vous indiquerai ce qu'il faut surveiller lorsque les choses tournent mal.
Que fait la fonction Python len() ?
Vous pouvez utiliser la fonction intégrée len()
de Python chaque fois que vous avez besoin de vérifier le nombre d'éléments contenus dans un objet. Je pense au comptage du nombre d'éléments d'une liste ou au comptage du nombre de caractères d'une chaîne de caractères. Vous pouvez également l'utiliser pour compter les clés d'un dictionnaire. Il y a toutes sortes d'utilisations.
Voici comment l'utiliser dans sa forme la plus élémentaire :
len(object)
Placez simplement ce que vous voulez mesurer (comme les choses que j'ai énumérées ci-dessus) à la place de object
.
Utilisation de len() avec les types de données Python courants
J'ai énuméré ci-dessus quelques cas d'utilisation courants, mais ils étaient tous un peu abstraits. Prenons des exemples courants pour mieux comprendre l'intérêt de l'utilisation du site len()
.
Compter les caractères d'une chaîne de caractères
Supposons que vous souhaitiez connaître la longueur exacte d'un texte, y compris chaque espace et chaque signe de ponctuation :
word = "Josef"
print(len(word))
Le résultat est 5
, puisque le mot "Josef"
(avec un "f") est composé de cinq caractères.
Vérification du nombre d'éléments d'une liste
Si vous souhaitez connaître le nombre d'éléments d'une liste, utilisez cette méthode :
numbers = [10, 20, 30, 40, 50]
print(len(numbers))
Ici, vous verrez 5
en sortie.
Obtenir la taille d'un tuple
Les tuples, tout comme les listes, regroupent des éléments mais sont immuables, ce qui signifie qu'ils ne peuvent pas être modifiés après leur création. len()
fonctionne également ici :
dimensions = (1920, 1080)
print(len(dimensions))
Cela donne 2
, puisque le tuple contient deux éléments.
Compter les clés d'un dictionnaire
Les dictionnaires Python sont constitués de paires clé-valeur. Lorsque vous utilisez len()
sur un dictionnaire, il ne compte que les clés :
person = {"name": "Alice", "age": 30, "city": "Paris"}
print(len(person))
Vous obtenez donc 3
(un pour chaque clé).
Vérification des éléments uniques d'un ensemble
Les ensembles sont pratiques lorsque vous souhaitez ne stocker que des objets uniques. len()
vous le dira :
colors = {"red", "green", "blue", "red"}
print(len(colors))
Cela renvoie à 3
, puisque "red"
apparaît deux fois mais n'est compté qu'une fois.
Comment len() fonctionne sous le capot
Vous vous demandez peut-être, comme moi, comment len()
détermine la taille.
En dessous, lorsque vous appelez len()
sur un objet, Python recherche la méthode __len__
de cet objet. Les types intégrés tels que les listes, les chaînes et les dictionnaires disposent tous de cette méthode.
Cela nous indique que, si nous créons notre propre classe et que nous voulons que len()
travaille avec elle, nous devons définir nous-mêmes une méthode __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))
Ici, len()
renvoie 3
, car la boîte contient trois objets. Comme pour les listes et les chaînes, len()
s'adapte tant que l'objet fournit une méthode __len__
.
Que se passe-t-il lorsque len() ne fonctionne pas ?
Bien sûr, en Python, tout n'a pas forcément une longueur. Si vous essayez d'utiliser len()
sur quelque chose qui ne le supporte pas (je vous montrerai dans une seconde avec un type de données int
), Python vous le fera savoir avec un TypeError
. Il s'agit d'un problème courant, surtout si vous travaillez avec des types de données mixtes. Par exemple :
num = 42
print(len(num))
Cela déclenche l'erreur suivante :
TypeError: object of type 'int' has no len()
Lorsque vous voyez cela, vérifiez que l'objet que vous mesurez est bien un conteneur ou une séquence (chaîne, liste ou dictionnaire) et qu'il ne s'agit pas d'une valeur unique telle qu'un nombre entier ou un nombre flottant.
Quelques cas d'utilisation pratiques de len()
N'essayons pas d'élever les exemples pour qu'ils ressemblent davantage à des situations de programmation réelles.
Boucle avec une plage
Lorsque vous devez parcourir une liste en utilisant ses indices, len()
vous aide à définir la plage appropriée pour votre boucle :
fruits = ["apple", "banana", "cherry"]
for i in range(len(fruits)):
print(f"Index {i}: {fruits[i]}")
Chaque fruit est imprimé avec son index, ce qui vous permet d'avoir l'ordre et le contexte.
Index 0: apple
Index 1: banana
Index 2: cherry
Contrôle des récipients vides
Souvent, vous voudrez savoir si un conteneur - comme une liste ou un dictionnaire - est vide avant de continuer :
cart = []
if len(cart) == 0:
print("Your shopping cart is empty.")
Ce modèle vous permet d'éviter les erreurs ou les traitements inutiles lorsqu'il n'y a rien à faire.
Tronquer les longues chaînes de caractères
Si vous avez affaire à des entrées utilisateur ou à l'affichage d'étiquettes, vous voudrez peut-être limiter la longueur des chaînes. len()
vous aide à faire respecter ces limites :
username = "superlongusername"
if len(username) > 10:
username = username[:10]
print(username)
Ici, tout nom d'utilisateur de plus de 10 caractères est réduit.
Erreurs courantes avec len()
len()
peut vous faire trébucher, même si vous avez une certaine expérience de Python :
-
Essayer d'utiliser len() sur des entiers ou des flottants: Les nombres ne sont pas des collections, ils n'ont donc pas de longueur.
-
Oublier que len() compte les éléments et non les valeurs: Dans un dictionnaire, len compte les clés, même si plusieurs clés renvoient à la même valeur.
-
En supposant que len() fonctionne sur tout : Les classes personnalisées ont besoin d'une méthode
__len__
; sinon,len()
ne saura pas quoi faire.
Essayez de vous souvenir de ces règles pour gagner du temps lors du débogage.
Gestion des erreurs avec len()
Étant donné que len()
peut soulever TypeError
s'il est mal utilisé, il est judicieux de préparer votre code à cette éventualité, en particulier lorsque vous travaillez avec des données imprévisibles. Un bloc try-except est un moyen simple de gérer ces erreurs avec élégance :
data = 123
try:
print(len(data))
except TypeError:
print("Object has no length.")
Au lieu de se bloquer, votre programme affiche maintenant un message amical. Notre cours Programmation orientée objet en Python est une excellente ressource pour devenir bon dans ce genre de choses.
Utilisation de len() avec des classes personnalisées
Revenons aux classes personnalisées. Une classe personnalisée est une classe que vous définissez vous-même à l'aide du mot-clé class
, par exemple lorsque vous modélisez quelque chose de spécifique à votre programme, comme une classe Team
, Box
ou Library
. Plus tôt, vous avez vu que len()
fonctionne sur les types intégrés comme les listes et les dictionnaires parce qu'ils implémentent une méthode spéciale appelée __len__()
. Il en va de même pour vos propres classes. Si vous voulez que len()
travaille sur eux, vous devez définir vous-même __len__()
.
Je n'essaie pas de vous embarrasser avec des détails techniques. Je pense que cela vaut la peine d'être mentionné parce que c'est important lorsque vous construisez des conteneurs de données personnalisés qui doivent se comporter comme des collections natives de Python. En prenant en charge len()
, vos objets peuvent interagir plus naturellement avec le reste de l'écosystème Python, notamment avec d'autres fonctions et bibliothèques.
Voici un bref récapitulatif :
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))
Encore une fois, len()
renvoie 3
, ce qui est la bonne réponse puisqu'il s'agit du nombre de joueurs dans votre équipe.
Conclusion
La prochaine fois que vous aurez besoin de compter, de mesurer ou de vérifier la taille d'un objet dans Python, n'oubliez pas que len()
est une excellente option.
Mais maintenant que nous sommes arrivés à la fin, je voudrais mentionner une autre chose importante. Nous nous sommes concentrés sur une fonction, mais il existe presque toujours de nombreuses façons différentes d'accomplir quelque chose en Python. Nous avons un article qui présente plusieurs façons de trouver la longueur d'une liste, dont la fonction len()
n'est qu'une option parmi d'autres : Taille de la liste de Python : 8 Différentes méthodes pour trouver la longueur d'une liste en Python.
Continuez à pratiquer de nouvelles méthodes. C'est un moyen sûr de faire de vous un meilleur programmeur. Et n'oubliez pas de vous inscrire à notre cursus de compétences enprogrammation Python, qui vous apprendra à optimiser le code, à écrire des fonctions et des tests, et bien plus encore.

Je suis rédacteur et éditeur dans le domaine de la science des données. Je suis particulièrement intéressé par l'algèbre linéaire, les statistiques, R, etc. Je joue également beaucoup aux échecs !