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.Falsepara 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
lista latuple()función:fuente
tupleacepta 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
pythontomen comotuple: -fuente