Question Obtenir la longueur d'un tableau en Python


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

arr.__len__()

Si oui, pourquoi la syntaxe étrange?


638
2018-02-05 21:26


origine


Réponses:


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

c'était intentionnellement fait de cette façon pour que les listes, tuples et autres types de conteneurs n'aient pas tous besoin d'implémenter explicitement un public .length() méthode, à la place, vous pouvez simplement vérifier la len() de tout ce qui met en œuvre la «magie» __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 un type de collection utiliser un .length() méthode alors qu'un autre type utilise un .length propriété, tandis que d'autres utilisations .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 fonctionnels de programmation.

lengths = map(len, list_of_containers)

1117
2018-02-05 21:29



La façon dont vous prenez une longueur de tout ce qui a du sens (une liste, un dictionnaire, un tuple, une chaîne, ...) 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 en interne len(object) dans 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 __len__() méthode à ce sujet et on peut appeler len sur ces instances.


48
2018-02-05 21:34



Python utilise typage de canard: ça ne se soucie pas de ce qu'est un objet est, tant qu'il a l'interface appropriée pour la situation actuelle. Lorsque vous appelez la fonction intégrée len () sur un objet, vous appelez sa méthode interne __len__. Un objet personnalisé peut implémenter cette interface et len ​​() retournera la réponse, même si l'objet n'est pas une séquence conceptuelle.

Pour une liste complète des interfaces, regardez ici: http://docs.python.org/reference/datamodel.html#basic-customization


23
2018-02-06 09:15



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


22
2018-02-05 21:32



Utilisez juste len (arr):

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

19
2018-02-05 21:30



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 retourne la hauteur et la largeur


8
2017-10-20 01:10



len(list_name) fonction prend la liste en tant que paramètre et il appelle la liste de __len__() fonction.


7
2018-04-12 11:20