Estoy tratando de convertir una lista en una tupla.
La mayoría de las soluciones en Google ofrecen el siguiente código:
l = [4,5,6]
tuple(l)
Sin embargo, el código produce un mensaje de error cuando lo ejecuto:
TypeError: el objeto 'tupla' no es invocable ¿Cómo puedo solucionar este problema?
python
python-2.7
tuples
LynnH
fuente
fuente
tuple
otro lugar antes?Respuestas:
Debería funcionar bien. No utilice
tuple
,list
u otros nombres especiales como un nombre de variable. Probablemente sea lo que está causando tu problema.fuente
Ampliando el comentario de eumiro, normalmente
tuple(l)
convertirá una listal
en una tupla:Sin embargo, si has redefinido
tuple
para ser una tupla en lugar de latype
tuple
:entonces obtienes un TypeError ya que la tupla en sí no es invocable:
Puede recuperar la definición original
tuple
al salir y reiniciar su intérprete o (gracias a @glglgl):fuente
Es posible que hayas hecho algo como esto:
Aquí está el problema ... Ya que ha utilizado una
tuple
variable para contener untuple (45, 34)
anterior ... Entonces, ahoratuple
esobject
de tipotuple
ahora ...Ya no es
type
ay, por lo tanto, ya no existeCallable
.Never
use cualquier tipo incorporado como su nombre de variable ... Usted tiene cualquier otro nombre para usar. Use cualquier nombre arbitrario para su variable en su lugar ...fuente
Para agregar otra alternativa
tuple(l)
, a partir de Python> =3.5
puede hacer:breve, un poco más rápido pero probablemente adolece de legibilidad.
Esto esencialmente desempaqueta la lista
l
dentro de un literal de tupla que se crea debido a la presencia de una coma individual,
.Ps: El error que está recibiendo se debe al enmascaramiento del nombre,
tuple
es decir, que asignó la tupla de nombre en algún lugar, por ejemplotuple = (1, 2, 3)
.Usarlo
del tuple
debería ser bueno para ir.fuente
Encuentro muchas respuestas actualizadas y respondidas correctamente, pero agregaré algo nuevo a la pila de respuestas.
En Python hay infinitas formas de hacer esto, aquí hay algunos casos de
manera normal
forma inteligente
Recuerde que la tupla es inmutable, se usa para almacenar algo valioso. Por ejemplo, la contraseña, clave o hash se almacenan en tuplas o diccionarios. Si se necesita un cuchillo, ¿por qué usar la espada para cortar manzanas? Úselo sabiamente, también hará que su programa sea eficiente.
fuente
tuple(l)
(primera forma) es más corta quetuple(item for item in l)
(segunda forma).