Estou tentando converter uma lista em uma tupla.
A maioria das soluções no Google oferece o seguinte código:
l = [4,5,6]
tuple(l)
No entanto, o código resulta em uma mensagem de erro quando eu o executo:
TypeError: o objeto 'tuple' não é passível de chamada Como posso corrigir esse problema?
python
python-2.7
tuples
LynnH
fonte
fonte
tuple
outro lugar antes?Respostas:
Deve funcionar bem. Não use
tuple
,list
ou outros nomes especiais como um nome de variável. Provavelmente é o que está causando seu problema.fonte
Expandindo o comentário de eumiro, normalmente
tuple(l)
converte uma listal
em uma tupla:No entanto, se você redefiniu
tuple
para ser uma tupla em vez detype
tuple
:então você obtém um TypeError, pois a tupla em si não pode ser chamada:
Você pode recuperar a definição original
tuple
fechando e reiniciando seu intérprete ou (graças a @glglgl):fonte
Você pode ter feito algo assim:
Aqui está o problema ... Como você usou uma
tuple
variável para armazenar umatuple (45, 34)
anterior ... Então, agoratuple
éobject
do tipotuple
agora ...Não é mais um
type
e, portanto, não é maisCallable
.Never
use qualquer tipo interno como o nome da variável ... Você tem outro nome para usar. Use qualquer nome arbitrário para sua variável ...fonte
Para adicionar outra alternativa para
tuple(l)
, a partir do Python> =,3.5
você pode fazer:curto, um pouco mais rápido, mas provavelmente sofre de legibilidade.
Isso basicamente descompacta a lista
l
em um literal de tupla, criado devido à presença de uma vírgula única,
.Ps: O erro que você está recebendo é devido ao mascaramento do nome,
tuple
ou seja, você atribuiu à tupla de nome em algum lugar, por exemplotuple = (1, 2, 3)
.Usando
del tuple
você deve estar pronto para ir.fonte
Encontro muitas respostas atualizadas e respondidas corretamente, mas adicionarei algo novo à pilha de respostas.
Em python, existem infinitas maneiras de fazer isso, eis algumas instâncias de
maneira normal
forma inteligente
Lembre-se de que a tupla é imutável, usada para armazenar algo valioso. Por exemplo, senha, chave ou hashes são armazenados em tuplas ou dicionários. Se for necessária uma faca, use a espada para cortar maçãs. Use-o com sabedoria, também tornará seu programa eficiente.
fonte
tuple(l)
(primeira via) é mais curto quetuple(item for item in l)
(segunda via).