web-dev-qa-db-fra.com

L'objet de type 'map' n'a pas de len () dans Python 3

J'ai un problème avec Python 3. J'ai le code Python 2.7 et j'essaie de le mettre à jour pour l'instant. Je reçois le message d'erreur suivant:

TypeError: l'objet de type 'map' n'a pas de len ()

à cette partie:

str(len(seed_candidates))

Avant de l'initialiser comme ça:

seed_candidates = map(modify_Word, wordlist)

Alors, quelqu'un peut-il m'expliquer ce que je dois faire?

(EDIT: Auparavant, cet exemple de code était incorrect car il utilisait set à la place de map. Il a été mis à jour maintenant.)

28
Sonius

Dans Python 3, map renvoie un objet de carte qui n'est pas un list:

>>> L = map(str, range(10))
>>> print(L)
<map object at 0x101bda358>
>>> print(len(L))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: object of type 'map' has no len()

Vous pouvez le convertir en liste puis en obtenir la longueur:

>>> print(len(list(L)))
10
54
TerryA