En el siguiente ejemplo, esperaría que todos los elementos fueran tuplas, ¿por qué una tupla se convierte en una cadena cuando solo contiene una sola cadena?
>>> a = [('a'), ('b'), ('c', 'd')]
>>> a
['a', 'b', ('c', 'd')]
>>>
>>> for elem in a:
... print type(elem)
...
<type 'str'>
<type 'str'>
<type 'tuple'>
('a')
solo evalúa a'a'
,
:a = 1, 2, 3; print a
()
, que solo consta de un par de paréntesis.False
para casi todo lo que sirve una tupla vacía (si entiendes lo que quiero decir).Respuestas:
Porque esos dos primeros elementos no son tuplas; son solo cuerdas. El paréntesis no los convierte automáticamente en tuplas. Debe agregar una coma después de la cadena para indicar a Python que debe ser una tupla.
Para corregir su código de ejemplo, agregue comas aquí:
Desde Python Docs :
Si realmente odias la sintaxis de la coma final, una solución es pasar un
list
a latuple()
función:fuente
tuple
acepta un iterable , que es una cadena (itera sobre caracteres). Si insiste en no usar la coma final, a continuación, hacer una lista intermedia:tuple(['abc'])
.Tus dos primeros ejemplos no son tuplas, son cadenas. Las tuplas de un solo elemento requieren una coma al final, como en:
fuente
('a')
no es una tupla, sino solo una cadena.Debe agregar una coma adicional al final para que se
python
tomen comotuple
: -fuente