Convertir lista a tupla en Python

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 se puede llamar

¿Como puedo solucionar este problema?

Debería funcionar bien. No use 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) 

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]:  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]:  

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 "", line 1, in  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 …

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.

Encuentro muchas respuestas actualizadas y adecuadamente, pero agregaré algo nuevo a la stack de respuestas.

En Python hay infinitas formas de hacer esto, aquí hay algunos ejemplos.
Forma normal

 >>> l= [1,2,"stackoverflow","python"] >>> l [1, 2, 'stackoverflow', 'python'] >>> tup = tuple(l) >>> type(tup)  >>> tup (1, 2, 'stackoverflow', 'python') 

forma inteligente

 >>>tuple(item for item in l) (1, 2, 'stackoverflow', 'python') 

Recuerde que la tupla es inmutable, utilizada para almacenar algo valioso. Por ejemplo, contraseña, clave o hashes se almacenan en tuplas o diccionarios. Si se necesita cuchillo por qué usar la espada para cortar manzanas. Úselo sabiamente, también hará que su progtwig sea eficiente.