J'essaie de convertir une liste en tuple.
La plupart des solutions sur Google proposent le code suivant:
l = [4,5,6]
tuple(l)
Cependant, le code génère un message d'erreur lorsque je l'exécute:
TypeError: l'objet 'tuple' n'est pas appelable Comment puis-je résoudre ce problème?
python
python-2.7
tuples
LynnH
la source
la source
tuple
ailleurs?Réponses:
Cela devrait bien fonctionner. Ne pas utiliser
tuple
,list
ou d' autres noms spéciaux comme nom de variable. C'est probablement ce qui cause votre problème.la source
En développant le commentaire d'eumiro,
tuple(l)
cela convertira normalement une listel
en tuple:Cependant, si vous avez redéfini
tuple
pour être un tuple plutôt que letype
tuple
:alors vous obtenez une TypeError puisque le tuple lui-même n'est pas appelable:
Vous pouvez récupérer la définition d'origine de
tuple
en quittant et en redémarrant votre interprète, ou (grâce à @glglgl):la source
Vous pourriez avoir fait quelque chose comme ça:
Voici le problème ... Puisque vous avez utilisé une
tuple
variable pour contenir unetuple (45, 34)
précédente ... Donc, maintenanttuple
c'est unobject
typetuple
maintenant ...Ce n'est plus un
type
et donc, ce n'est plusCallable
.Never
utilisez n'importe quel type intégré comme nom de variable ... Vous avez un autre nom à utiliser. Utilisez un nom arbitraire pour votre variable à la place ...la source
Pour ajouter une autre alternative à
tuple(l)
, à partir de Python> =3.5
vous pouvez faire:bref, un peu plus rapide mais souffre probablement de lisibilité.
Cela décompresse essentiellement la liste
l
dans un littéral de tuple qui est créé en raison de la présence de la virgule unique,
.Ps: L'erreur que vous recevez est due au masquage du nom,
tuple
c'est-à-dire que vous avez attribué au tuple de nom quelque part, par exempletuple = (1, 2, 3)
.Utiliser
del tuple
devrait être bon pour vous.la source
Je trouve de nombreuses réponses à jour et correctement répondues, mais j'ajouterai quelque chose de nouveau à la pile de réponses.
En python, il existe des façons infinies de le faire, voici quelques exemples de
manière normale
façon intelligente
N'oubliez pas que le tuple est immuable, utilisé pour stocker quelque chose de précieux. Par exemple, le mot de passe, la clé ou les hachages sont stockés dans des tuples ou des dictionnaires. Si un couteau est nécessaire, pourquoi utiliser l'épée pour couper les pommes. Utilisez-le judicieusement, cela rendra également votre programme efficace.
la source
tuple(l)
(première voie) est plus courte quetuple(item for item in l)
(deuxième voie).