Syntaxe, exemples et cas d’utilisation

Lorsque vous travaillez avec des itérables Python, trouver le nombre d’éléments contenus dans les itérables est une opération courante. Apprenez à utiliser le len intégré de Python pour trouver la longueur des itérables et bien plus encore.

Python propose une suite de structures de données intégrées et un ensemble de méthodes pour les utiliser. De plus, il existe des fonctions intégrées qui sont utiles lorsque vous travaillez avec ces structures de données. L’une de ces fonctions est len() qui donne le nombre d’éléments présents dans un itérable.

Dans ce didacticiel, nous apprendrons à utiliser la fonction len() avec des listes, des tuples, des chaînes, etc. Nous verrons également quelques cas d’utilisation courants.

Commençons !👩‍🏫

Syntaxe de la fonction Python len()

Voici la syntaxe pour utiliser la fonction len de Python :

len(iterable)

Comme on le voit, la fonction len() nécessite un paramètre, qui est n’importe quel itérable valide. L’itérable fait souvent partie d’une liste, d’un tuple ou d’une chaîne. Mais il peut aussi s’agir de tout autre type valide.

On voit que la syntaxe pour utiliser la fonction len() est super simple. Passons ensuite au code de quelques exemples.

📑 Pour les exemples de code de ce tutoriel, vous pouvez coder dans un REPL Python.

Utilisation de la fonction len() avec Iterables

Avec séquences

Vous pouvez utiliser la fonction len() pour trouver la longueur des itérables tels que les listes, les tuples et les chaînes.

Voici un exemple :

>>> nums = [9,3,6,1,2]
>>> len(nums)
5

>>> nums_tup = (9,3,6,1,2)
>>> len(nums_tup)
5

Pour ces structures de données qui stockent une séquence, vous accéderez généralement aux éléments à l’aide de leur index ou obtiendrez une tranche (sous-séquence) selon vos besoins.

Avec d’autres collections

Vous pouvez également utiliser la fonction len() avec d’autres collections Python telles que des ensembles et des dictionnaires.

Ces structures de données sont des collections non ordonnées. Bien que vous ne soyez peut-être pas intéressé par la commande des articles, il est toujours utile d’obtenir le nombre total d’articles de la collection.

>>> nums_set = set(nums)
>>> len(nums_set)
5

>>> prices = {'Notebook':5,'Pencil case':7,'Bookmarks':3,'Pens':1,'Markers':8}
>>> len(prices)
5

Cas d’utilisation courants de la fonction Python len()

Jusqu’à présent, nous avons vu des exemples simples d’utilisation de la fonction len() pour obtenir le nombre d’éléments dans un itérable. Voyons maintenant où nous pouvons l’utiliser en pratique.

#1. Itération à l’aide de boucles For

La boucle Python for fournit une construction pour parcourir les itérables dans le for d’un élément dans la syntaxe itérable. Mais si vous souhaitez accéder à l’index de chaque élément au lieu de l’élément lui-même ou à la fois à l’index et aux éléments ensemble, vous pouvez utiliser la fonction range() comme indiqué :

>>> nums = [9,2,4,7,8]
>>> for i in range(len(nums)):
...      print(f"Index {i}: {nums[i]}")

Étant donné que range(N) donne la séquence d’entiers 0,1,2,…,N – 1, l’utilisation de range(len(nums)) nous donne l’ensemble des indices valides à parcourir.

# Output
Index 0: 9
Index 1: 2
Index 2: 4
Index 3: 7
Index 4: 8

Cependant, la méthode Pythonic recommandée pour accéder à la fois à l’index et à l’élément consiste à utiliser la fonction enumerate :

>>> nums = [9,2,4,7,8]
>>> for idx,num in enumerate(nums):
...     print(f"Index {idx}: {num}")
# Output
Index 0: 9
Index 1: 2
Index 2: 4
Index 3: 7
Index 4: 8

#2. Boucle conditionnelle à l’aide de boucles While

Supposons que vous ayez une liste de nombres. La méthode de liste pop() supprime le dernier élément de la liste et le renvoie.

Tant que la longueur de la liste des nombres len(nums) est supérieure à zéro, il y a au moins un élément qui peut être supprimé.

>>> nums = [9,2,4,7,8]
>>> while len(nums) > 0:
...     nums.pop()
# Output
8
7
4
2
9

L’exemple ci-dessus est une manière plus explicite d’écrire ce qui suit :

>>> nums = [9,2,4,7,8]
>>> while nums:
...     nums.pop()

while nums : équivaut à la condition « tant que la liste des nums n’est pas vide ».

#3. Vérification et validation de la longueur des itérables

Une autre utilisation courante de la fonction len consiste à vérifier et à valider la longueur de certains itérables.

Ici, nous vérifions si le nom d’utilisateur est une chaîne valide basée sur la longueur (calculée à l’aide de la fonction len()) :

>>> username = "another-random-user"
>>> if len(username) > 10:
...     print("Username too long; should be 10 characters long at max.")
... elif len(username) < 5:
...     print("Username too short; should be at least 5 characters long.")
... else:
...     print("Valid username!")
Username too long; should be 10 characters long at max.

#4. Compréhensions de listes et de dictionnaires

Les compréhensions en Python fournissent une syntaxe concise pour construire de nouveaux itérables à partir de ceux existants. Nous pouvons utiliser des fonctions intégrées dans une expression de compréhension.

Compréhension de la liste

Dans cette compréhension de liste, nous utilisons la fonction len() pour obtenir la longueur de chaque chaîne dans la liste des langues.

>>> languages = ['Python','C','Rust','JavaScript']
>>> len_langs = [len(lang) for lang in languages]
>>> len_langs
[6, 1, 4, 10]

Compréhension du dictionnaire

Dans cette compréhension de dictionnaire, nous utilisons la liste des langues et la fonction len() pour construire un dictionnaire :

>>> languages = ['Python','C','Rust','JavaScript']
>>> lang_len = {lang:len(lang) for lang in languages}
>>> lang_len
{'Python': 6, 'C': 1, 'Rust': 4, 'JavaScript': 10}

Ici, les clés et les valeurs sont respectivement les chaînes de langue et la longueur des chaînes de langue.

#5. Paramètre clé dans le tri personnalisé

Python a la méthode sort() intégrée pour trier les listes Python en place et la fonction sorted() pour trier les listes et autres itérables.

Dans les deux cas, vous pouvez utiliser le paramètre clé pour personnaliser le tri.

Ici, nous trions la liste des langues en fonction de la longueur de la chaîne.

>>> languages = ['Python','C','Rust','JavaScript']
>>> languages.sort(key=len)
>>> languages
['C', 'Rust', 'Python', 'JavaScript']

Dans l’extrait ci-dessous, nous utilisons la fonction sorted() pour obtenir une liste triée.

>>> languages = ['Hindi','English','German','French']
>>> sorted(languages,key=len)
['Hindi', 'German', 'French', 'English']

Dans cet exemple, ‘Allemand’ et ‘Français’ ont chacun 6 caractères. Étant donné que la fonction sorted() effectue un tri stable, l’ordre dans la liste d’origine est conservé.

#6. Longueur des tableaux NumPy

Vous pouvez également utiliser la fonction len() avec d’autres structures de données comme Tableaux NumPy.

>>> import numpy as np
>>> np_array = np.array([3,4,6,9])
>>> type(np_array)
<class 'numpy.ndarray'>
>>> len(np_array)
4

Dans ce cas, np_array est un vecteur à 4 éléments. Donc len(np_array) renvoie 4, le nombre d’éléments présents dans le tableau.

Une matrice est un tableau à deux dimensions.

Prenons l’exemple suivant. len(np_array) vaut 2, qui est le nombre de lignes.

>>> matrix = [[1,2,3],[4,5,6]]
>>> np_array = np.array(matrix)
>>> np_array
array([[1, 2, 3],
       [4, 5, 6]])
>>> len(np_array)
2

Pour comprendre, revenons à la matrice. Nous avons une structure de liste imbriquée où la liste externe contient deux listes imbriquées. Et la fonction len() renvoie le nombre d’éléments dans un conteneur (ici, il s’agit de deux listes) :

>>> help(len)
Help on built-in function len in module builtins:

len(obj, /)
    Return the number of items in a container.

Cependant, lorsque vous commencez à travailler avec des tableaux multidimensionnels, il est recommandé d’utiliser l’attribut shape à la place.

>>> np_array.shape
(2, 3)

Pièges courants à éviter lors de l’utilisation de la fonction len() de Python

Pour conclure notre discussion, passons en revue certains des pièges courants à éviter lors de l’utilisation de la fonction len en Python.

Utilisation de len() avec des types de données non itérables

Nous savons que la fonction len ne prend que des itérables valides comme argument. Cela signifie que si vous appelez la fonction len avec – un type de données invalide – qui n’est pas itérable, vous rencontrerez des erreurs.

Ces types non valides incluent les types de données de base tels que les entiers, les nombres à virgule flottante et les booléens :

>>> len(2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: object of type 'int' has no len()

>>> len(True)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: object of type 'bool' has no len()

>>> len(3.14)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: object of type 'float' has no len()

En Python, les générateurs sont des choix économes en mémoire pour les cas d’utilisation qui nécessitent la génération de séquences. L’objet générateur renvoie les éléments de la séquence, à la demande, un élément à la fois. Mais les objets générateurs n’ont pas de longueur.

Vous rencontrerez donc des erreurs si vous essayez de calculer la longueur d’un objet générateur :

>>> nums_sq = (i*i for i in range(10))
>>> nums_sq
<generator object <genexpr> at 0x0157DBC0>
>>> len(nums_sq)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: object of type 'generator' has no len()

Utiliser len() avec des tuples de longueur un

Si vous insérez uniquement l’élément dans un tuple, Python l’interprète comme un élément unique et non comme un tuple.

Voici un exemple :

>>> nums = (1)
>>> len(nums)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: object of type 'int' has no len()

Ainsi, lorsque vous avez un tuple avec un seul élément, initialisez-le sous cette forme : tuple_name = (elt, ) afin qu’il soit interprété comme un tuple :

>>> nums = (1,)
>>> len(nums)
1

Résumé

Voici un résumé de ce que nous avons couvert dans ce tutoriel :

  • Vous pouvez trouver le nombre d’éléments dans n’importe quel itérable en utilisant la fonction len() en Python. La syntaxe pour utiliser la fonction de longueur est : len(any-valid-iterable).
  • Cela inclut des séquences telles que des listes, des tuples et des chaînes. Et d’autres collections telles que des dictionnaires et des ensembles.
  • La fonction len() est couramment utilisée dans les boucles et les compréhensions.
  • Vous pouvez également utiliser la fonction len() comme paramètre clé lorsque vous devez personnaliser le tri en fonction de la longueur. Par exemple : trier une liste de chaînes en fonction de leur longueur.

Ensuite, apprenez à utiliser la fonction sum() de Python.