élément - vider liste python




Obtenir la longueur d'un tableau en Python (5)

En Python , le suivant est le seul moyen d'obtenir le nombre d'éléments?

arr.__len__()

Si oui, pourquoi la syntaxe étrange?


La façon dont vous prenez une longueur de tout ce qui a du sens (une liste, un dictionnaire, un tuple, une chaîne de caractères, ...) est d'appeler len dessus.

l = [1,2,3,4]
s = 'abcde'
len(l) #returns 4
len(s) #returns 5

La raison de la syntaxe "étrange" est que python traduit intérieurement len(object) en object.__len__() . Ceci s'applique à n'importe quel objet. Donc, si vous définissez une classe et qu'il est logique qu'elle ait une longueur, définissez simplement une __len__() sur celle-ci et ensuite vous pouvez appeler len sur ces instances.


La méthode préférée pour obtenir la longueur d'un objet python est de le passer en argument à la fonction len . En interne, Python va alors essayer d'appeler la méthode spéciale __len__ de l'objet qui a été passé.


Utilisez juste len (arr):

>>> import array
>>> arr = array.array('i')
>>> arr.append('2')
>>> arr.__len__()
1
>>> len(arr)
1

vous pouvez utiliser len(arr) comme suggéré dans les réponses précédentes pour obtenir la longueur du tableau. Dans le cas où vous voulez les dimensions d'un tableau 2D, vous pouvez utiliser arr.shape renvoie la hauteur et la largeur


my_list = [1,2,3,4,5]
len(my_list)
# 5

La même chose pour les tuples:

my_tuple = (1,2,3,4,5)
len(my_tuple)
# 5

Et les chaînes, qui ne sont en réalité que des tableaux de caractères:

my_string = 'hello world'
len(my_string)
# 11

Il a été fait intentionnellement de cette façon afin que les listes, les tuples et autres types de conteneurs n'aient pas tous besoin d'implémenter explicitement une méthode publique .length() , vous pouvez juste vérifier le len() de tout ce qui implémente le 'magique' __len__() méthode.

Bien sûr, cela peut sembler redondant, mais les implémentations de vérification de longueur peuvent varier considérablement, même dans la même langue. Il n'est pas rare de voir qu'un type de collection utilise une méthode .length() tandis qu'un autre type utilise une propriété .length , tandis qu'un autre utilise .count() . Avoir un mot-clé au niveau de la langue unifie le point d'entrée pour tous ces types. Ainsi, même les objets que vous ne considérez pas comme des listes d'éléments peuvent toujours être vérifiés. Cela inclut les chaînes, les files d'attente, les arbres, etc.

La nature fonctionnelle de len() se prête également bien aux styles de programmation fonctionnels.

lengths = map(len, list_of_containers)






arrays