No exemplo a seguir, eu esperaria que todos os elementos fossem tuplas, por que uma tupla é convertida em uma string quando ela contém apenas uma única string?
>>> a = [('a'), ('b'), ('c', 'd')]
>>> a
['a', 'b', ('c', 'd')]
>>>
>>> for elem in a:
... print type(elem)
...
<type 'str'>
<type 'str'>
<type 'tuple'>
('a')
apenas avalia para'a'
,
:a = 1, 2, 3; print a
()
, que consiste apenas em um par de parênteses.False
- quase tudo para que uma tupla vazia é boa (se é que você me entende).Respostas:
Porque esses dois primeiros elementos não são tuplas; eles são apenas strings. Os parênteses não os tornam tuplas automaticamente. Você deve adicionar uma vírgula após a string para indicar ao python que deve ser uma tupla.
Para corrigir seu código de exemplo, adicione vírgulas aqui:
Dos documentos do Python :
Se você realmente odeia a sintaxe da vírgula final, uma solução alternativa é passar um
list
para atuple()
função:fonte
tuple
aceita um iterável , que é uma string (itera sobre os caracteres). Se você insistir em não usar a vírgula à direita, em seguida, fazer uma lista intermediária:tuple(['abc'])
.Seus primeiros dois exemplos não são tuplas, são strings. As tuplas de item único exigem uma vírgula final, como em:
fonte
('a')
não é uma tupla, mas apenas uma string.Você precisa adicionar uma vírgula extra no final para
python
tomá-los comotuple
: -fonte