676 votes

python convertir liste de tuple

Je suis en train de convertir une liste à un n-uplet. Quand je recherche sur google j'ai trouver beaucoup de réponses comme:

l = [4,5,6]
tuple(l)

Mais si je fais ce que je reçois un message d'erreur:

TypeError: 'tuple' object is not callable

Je suis à l'aide de python 2.7.3

984voto

root Points 14514

Il devrait fonctionner correctement, ne pas utiliser tuple, list ou d'autres noms spéciaux comme un nom de variable. C'est probablement ce qui est à l'origine de votre problème.

>>> l = [4,5,6]
>>> tuple(l)
(4, 5, 6)

122voto

unutbu Points 222216

L'expansion sur eumiro commentaire, normalement, tuple(l) permettra de convertir une liste l en un n-uplet:

In [1]: l = [4,5,6]

In [2]: tuple
Out[2]: <type 'tuple'>

In [3]: tuple(l)
Out[3]: (4, 5, 6)

Toutefois, si vous avez redéfini tuple être un tuple plutôt que de l' type tuple:

In [4]: tuple = tuple(l)

In [5]: tuple
Out[5]: (4, 5, 6)

ensuite, vous obtenez une erreur TypeError depuis le tuple lui-même n'est pas appelable:

In [6]: tuple(l)
TypeError: 'tuple' object is not callable

Vous pouvez récupérer la définition d'origine pour tuple par l'abandon et le redémarrage de votre interprète, ou (merci à @glglgl):

In [6]: del tuple

In [7]: tuple
Out[7]: <type 'tuple'>

30voto

Rohit Jain Points 90368

Vous pourriez faire quelque chose comme ceci: -

>>> tuple = 45, 34  # You used `tuple` as a variable here
>>> tuple
(45, 34)
>>> l = [4, 5, 6]
>>> tuple(l)   # Will try to invoke the variable `tuple` rather than tuple type.

Traceback (most recent call last):
  File "<pyshell#10>", line 1, in <module>
    tuple(l)
TypeError: 'tuple' object is not callable
>>> 
>>> del tuple  # you can delete object tuple created earlier to make it work
>>> tuple(l)
(4, 5, 6)

Voici le problème.. comme vous avez utilisé un tuple variable pour contenir un tuple (45, 34) auparavant.. Donc, maintenant, tuple est object de type tuple maintenant..

Il n'est pas plus un type et, par conséquent, il n'est pas plus Callable.

Never utiliser tout types intégrés en tant que votre nom de variable.. Vous n'avez aucun autre nom à utiliser. Utiliser n'importe quel nom de votre variable à la place..

5voto

Danny Hong Points 409
l = [4,5,6]

pour convertir la liste de tuple,

l = tuple(l)

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