Python >> Tutoriel Python >  >> Python

Comment réparer "TypeError:len () d'objet non dimensionné"

Formulation du problème : Comment réparer le TypeError: len() of unsized object ?

TypeError: len() of unsized object

Il existe de nombreuses façons possibles pour lesquelles ce tableau peut se produire. Un écueil courant consiste à utiliser le len() fonction sur un tableau NumPy avec une seule valeur.

Exemple :Considérons l'exemple minimal qui crée ce message d'erreur !

>>> import numpy as np
>>> a = np.array(5)
>>> a
array(5)
>>> len(a)
Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    len(a)
TypeError: len() of unsized object
>>> 

Raison de l'échec : Le tableau a se compose d'une seule valeur 5. Le fait que le tableau se compose d'une seule valeur rend le tableau NumPy a un scalaire, pas un type de conteneur sur lequel vous pouvez appeler le len() fonction. Vous ne pouvez pas utiliser le len() fonction avec un scalaire car les scalaires ne sont pas des types de conteneurs qui peuvent avoir 0 ou plusieurs éléments. Les scalaires consistent toujours en un élément et le len() la fonction n'est pas définie sur eux !

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

Solution :Au lieu de compter sur le len() fonction pour déterminer le nombre d'éléments dans un tableau NumPy, utilisez le array.size propriété qui est toujours définie qu'il s'agisse d'un tableau scalaire ou non.

Voici le même exemple sans le TypeError: len() of unsized object :

>>> import numpy as np
>>> a = np.array(5)
>>> a
array(5)
>>> a.size
1

Remarque :Le size La propriété ne fonctionne que pour les tableaux NumPy, pas pour les autres types de scalaires tels que les entiers ou les flottants. Pour ceux-là, cela n'a vraiment aucun sens d'exécuter le len() fonction sur.

Merci d'avoir lu cet article, j'espère qu'il vous a fait gagner du temps ! 🙂