Python >> Tutoriel Python >  >> Python

Python len()

La fonction intégrée de Python len() renvoie la longueur de la chaîne, du tableau, de la liste, du tuple, du dictionnaire ou de tout autre itérable donné. Le type de la valeur de retour est un entier qui représente le nombre d'éléments dans cet itérable.

Utilisation

Apprenez par l'exemple ! Voici quelques exemples d'utilisation du len() fonction intégrée.

>>> friends = ['Alice', 'Bob', 'Carl', 'Ann']
>>> len(friends)
4
>>> friends.extend([1, 2, 3])
>>> len(friends)
7
>>> len('hello world')
11
>>> len('hi')
2
>>> len((1, 2, 3))
3
>>> len({42, 21})
2
>>> age = {'Alice': 18, 'Bob': 21}
>>> len(age)
2
>>> age['Carl'] = 33
>>> len(age)
3

Les exemples montrent le len() fonction appliquée à une liste, un tuple, une chaîne, un dictionnaire et un ensemble. Généralement, vous pouvez l'appliquer à n'importe quel itérable et il renvoie le nombre d'éléments dans cet itérable.

Syntaxe len()

Le len() objet a la syntaxe suivante :

Syntax: 
len(object)         # Get object's number of elements. Should be an iterable or container type.
Arguments object Un itérable ou un conteneur qui contient des éléments.
Valeur de retour integer Renvoie le nombre d'éléments dans le object .

Mais avant de continuer, je suis ravi de vous présenter mon nouveau livre Python Python One-Liners (Lien Amazon).

Si vous aimez les one-liners, vous allez adorer le livre. Il vous apprendra tout ce qu'il y a à savoir sur une seule ligne de code Python. Mais c'est aussi une introduction à l'informatique , science des données, apprentissage automatique et algorithmes. L'univers en une seule ligne de Python !

Le livre est sorti en 2020 avec l'éditeur de livres de programmation de classe mondiale NoStarch Press (San Francisco).

Lien :https://nostarch.com/pythononeliners


Quelle est la complexité d'exécution de len() ?

La complexité d'exécution du len() fonction sur votre liste Python est O(1). Cela prend un temps d'exécution constant, quel que soit le nombre d'éléments dans la liste. Pourquoi? Parce que l'objet de liste maintient un compteur entier qui augmente et diminue à mesure que vous ajoutez et supprimez des éléments de liste. La recherche de la valeur de ce compteur prend un temps constant.

Les objets de liste Python gardent une trace de leur propre longueur. Lorsque vous appelez la fonction len(...) sur un objet liste, voici ce qui se passe (en gros) :

  • La machine virtuelle Python recherche le len(...) fonction dans un dictionnaire pour trouver l'implémentation associée.
  • Vous passez un objet liste comme argument au len() fonction afin que la machine virtuelle Python vérifie le __len__ méthode de l'objet liste.
  • La méthode est implémentée en C++ et c'est juste un compteur qui augmente chaque fois que vous ajoutez un élément à la liste et diminue si vous supprimez un élément de la liste. Par exemple, disons, la variable length stocke la longueur actuelle de la liste. La méthode renvoie alors la valeur self.length .
  • Terminé.

Mise en œuvre de la fonction personnalisée len()

Le len() La fonction est implémentée pour de nombreux types de données différents en Python. En fait, chaque fois que vous implémentez votre propre objet, vous pouvez définir le __len__ méthode pour activer le len() fonctionnent également sur votre objet personnalisé. Naturellement, le __len__ La méthode a été implémentée par pratiquement tous les types de données dans les packages Python où cela a du sens.

Spécification :object.__len__(self)

La fonction __len__() est appelée pour implémenter la fonction intégrée len() décrit dans cet article. Ainsi, vous pouvez créer vos propres objets conteneurs, même des objets non itérables qui contiennent encore des valeurs. La valeur de retour du __len__() la méthode personnalisée doit être un entier supérieur ou égal à 0.

Remarque :un objet qui ne définit pas le __bool__() méthode et qui a un __len__() la méthode qui renvoie zéro est considérée comme fausse dans un contexte booléen, par exemple lorsque vous l'utilisez avec la fonction intégrée bool(object) .

Vous pouvez définir n'importe quelle valeur de retour d'entier positif que vous souhaitez. Pour les types de collection tels que les listes, la valeur de retour est le nombre d'éléments dans la collection. Fait intéressant, la méthode définit également si l'interprétation booléenne par défaut de l'objet doit être True (pour une longueur positive>0) ou False (pour une longueur nulle ==0).

Par exemple, considérez le code if o: print('hi') pour l'objet o . Si la fonction de longueur len(o) renvoie 0, la condition if ne tient pas—en supposant qu'il n'y a pas d'implémentation du __bool__() méthode.

Voici un exemple complet sur la façon dont vous pouvez implémenter votre objet personnalisé et son len() fonction :

class Cars:
    ''' The cars in your garage. '''

    def __init__(self):
        self.cars = []


    def add_car(self, car):
        self.cars.append(car)


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


myCars = Cars()
myCars.add_car('porsche') # < – Nah!
myCars.add_car('tesla') # < – Nah!
myCars.add_car('vw') # < – Still... Nah!

print('The number of cars in my garage: ', len(myCars))
# The number of cars in my garage:  3

Notez comment nous passons un Cars objet dans le len() fonction qui n'est pas un itérable mais toujours un conteneur pour d'autres voitures. En fait, vous n'avez même pas besoin de créer un objet conteneur pour autoriser le len() fonction sur votre objet personnalisé, tant que vous implémentez le __len__() méthode !

Résumé

La fonction intégrée de Python len() renvoie la longueur de la chaîne, du tableau, de la liste, du tuple, du dictionnaire ou de tout autre itérable donné.

print(len('hi'))
# 2

print(len([1, 2, 3]))
# 3

Le type de la valeur de retour est un entier qui représente le nombre d'éléments dans cet itérable.

print(type(len('hi')))
# <class 'int'>

J'espère que vous avez apprécié l'article! Pour améliorer votre formation Python, vous pouvez rejoindre la populaire et gratuite Finxter Email Academy :

Voulez-vous améliorer vos compétences Python d'une manière amusante et facile à consommer ? Considérez les ressources suivantes et devenez un maître codeur !


Post précédent