español - tuple() python




Convertir lista a tupla en Python (4)

Estoy tratando de convertir una lista en una tupla.

Cuando lo busco en Google, encuentro muchas respuestas similares a:

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

Pero si hago eso me sale este mensaje de error:

TypeError: el objeto 'tuple' no es invocable

¿Como puedo solucionar este problema?


Ampliando el comentario de eumiro, normalmente la tuple(l) convertirá una lista l en una tupla:

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

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

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

Sin embargo, si ha redefinido la tuple para que sea una tupla en lugar del type tuple :

In [4]: tuple = tuple(l)

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

luego obtienes un TypeError ya que la tupla en sí no es invocable:

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

Puede recuperar la definición original de la tuple al salir y reiniciar su intérprete, o (gracias a @glglgl):

In [6]: del tuple

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

Debería funcionar bien. No utilice tuple , list u otros nombres especiales como nombre de variable. Probablemente es lo que está causando su problema.

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

Para agregar otra alternativa a la tuple(l) , a partir de Python> = 3.5 puede hacer:

t = *l,  # or t = (*l,) 

Corto, un poco más rápido, pero probablemente sufre de legibilidad.

Esto esencialmente desempaqueta la lista l dentro de un literal de tupla que se crea debido a la presencia de la coma única,.

Ps: El error que está recibiendo se debe al enmascaramiento de la tuple nombre, es decir, que asignó la tupla de nombre en algún lugar, por ejemplo, tuple = (1, 2, 3) .

Usando del tuple deberías ser bueno para ir.


Podrías haber hecho algo como esto:

>>> 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 the object tuple created earlier to make it work
>>> tuple(l)
(4, 5, 6)

Aquí está el problema ... Ya que ha usado una variable de tuple para sostener una tuple (45, 34) antes ... Entonces, la tuple es un object de tipo tuple ahora ...

No es más un type y, por lo tanto, no es más Callable .

Never use ningún tipo incorporado como nombre de variable ... Tiene otro nombre para usar. Utilice cualquier nombre arbitrario para su variable en su lugar ...





tuples