189 votes

Compter les éléments d'un tableau en Python

Comment puis-je compter le nombre d'éléments dans un tableau, car contrairement à la logique array.count(string) ne compte pas tous les éléments du tableau, il recherche juste le nombre d'occurrences de la chaîne.

1 votes

Il ne s'agit pas vraiment d'une duplication du comptage des éléments d'une liste, car un tableau peut être de dimension supérieure, n'est-ce pas ? Le site len() d'un tableau n'est pas le nombre d'éléments du tableau, sauf si le tableau est 1D. On pourrait arguer qu'une liste de listes est également de dimension supérieure, mais la préséance est plus claire pour la liste de premier niveau. Pour cette liste de premier niveau, le nombre d'éléments est juste son len() parce qu'elle est fondamentalement 1D.

0 votes

Est-ce que np.ndarray.size ne ferait pas ce que vous voulez ? Par exemple a= np.ones((3,5,4,8)) donne un tableau de dimensions 3,5,4,8 qui a donc 3*5*4*8 =480 éléments. En faisant a.size retours 480. Voir https://numpy.org/doc/stable/reference/generated/numpy.ndarray.size.html . Je voudrais ajouter cette réponse mais la question a été fermée en tant que doublon, même si elle n'est pas la même que l'autre question.

344voto

Trent Points 5924

La méthode len() renvoie le nombre d'éléments de la liste.

Syntaxe :

len(myArray)

Eg :

myArray = [1, 2, 3]
len(myArray)

Sortie :

3

0 votes

Pouvez-vous s'il vous plaît expliquer votre réponse ;)

4 votes

Cela ne fonctionne que pour une liste ou un tableau plat et unidimensionnel, mais print len([[0, 0], [0, 0]]) est égal à 2, tout comme len(array([[0, 0], [0, 0]])) .

0 votes

Comment faire pour l'index d'un tableau ? par exemple, quand je boucle ce tableau, j'obtiens un certain index et comment savoir combien d'index il y a ?

28voto

Jeremy Brown Points 4950

len est une fonction intégrée qui appelle l'objet de conteneur donné __len__ pour obtenir le nombre d'éléments dans l'objet.

Les fonctions entourées d'un double soulignement sont généralement des "méthodes spéciales" implémentant l'une des interfaces standard de Python (conteneur, nombre, etc.). Les méthodes spéciales sont utilisées via le sucre syntaxique (création d'objets, indexation et découpage de conteneurs, accès aux attributs, fonctions intégrées, etc.)

Utilisation de obj.__len__() ne serait pas la façon correcte d'utiliser la méthode spéciale, mais je ne vois pas pourquoi les autres ont été autant modulées.

0 votes

Surtout quand on a tous les deux dit que c'était une mauvaise habitude. Comprendre ce que fait "réellement" la longueur est important en soi.

16voto

user2993689 Points 253

Si vous avez un tableau multidimensionnel, len() peut ne pas vous donner la valeur que vous recherchez. Par exemple :

import numpy as np
a = np.arange(10).reshape(2, 5)
print len(a) == 2

Ce bloc de code retournera vrai, vous indiquant que la taille du tableau est 2. Cependant, il y a en fait 10 éléments dans ce tableau 2D. Dans le cas d'un tableau multidimensionnel, len() vous donne la longueur du tableau. premièrement dimension du tableau, c'est-à-dire

import numpy as np
len(a) == np.shape(a)[0]

Pour obtenir le nombre d'éléments dans un tableau multidimensionnel de forme arbitraire :

import numpy as np
size = 1
for dim in np.shape(a): size *= dim

0 votes

Cela semble vraiment utile, mais sous quelle forme np doit-il être initialisé ? Si je l'initialise en tant que liste vide, alors python dit 'list' object has no attribute 'arrange'

1 votes

@russellmania import numpy as np

0 votes

Modifié pour inclure l'importation de numpy

4voto

Kevin Little Points 5406

Ou,

myArray.__len__()

si vous voulez être oopy ; "len(myArray)" est beaucoup plus facile à taper ! :)

0 votes

@Gregg Lind, Cela n'introduit pas de condition de course. (C'est, cependant, aussi glauque que possible).

0 votes

La condition de course était entre moi et un autre poster ! Notez mon réponse encore plus descendue ci-dessous !

0 votes

(Je réalise maintenant que ma réponse est supprimée, mais en fait, Kevin Little et moi avons dit exactement la même chose au même moment).

2voto

Evan Young Points 27

Avant de voir ça, je me suis dit : "Il faut que je trouve un moyen de faire ça !".

for tempVar in arrayName: tempVar+=1

Et puis j'ai pensé, "Il doit y avoir un moyen plus simple de faire ça." et j'avais raison.

len(arrayName)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X