2010-02-17 4 views
6

Sé que esto es una manera, mediante la colocación de una coma:¿Hay más formas de definir una tupla con un solo elemento?

>>> empty =() 
>>> singleton = 'hello', # <-- note trailing comma 
>>> len(empty) 
0 
>>> len(singleton) 
1 
>>> singleton 
('hello',) 

Fuente: http://docs.python.org/tutorial/datastructures.html

¿Hay más maneras de definir una tupla con sólo 1 artículo?

+6

* "Debería haber una, y preferiblemente solo una, forma obvia de hacerlo." * –

+0

@BenJames ... pero seguramente _ "La legibilidad cuenta" _ :-) – Julian

Respuesta

10
>>> tuple(['hello']) 
('hello',) 

Pero la sintaxis incorporada existe por algún motivo.

+1

La primera versión es mucho más clara, IMO. –

+2

@Edan: Menos código usando el built-in, pero la coma final realmente no salta y dice "TUPLE!" ... mis ojos podrían extrañarlo. –

+0

Las tuplas de Singleton son algo así como una curiosidad, sin dudas. Aquí está la justificación de GVR para su existencia: http://www.python.org/search/hypermail/python-1992/0292.html –

2

singleton = ('hello',)

Esto es más claro supongo, y @jleedev aún más clara. Pero me gusta el método que utiliza la mejor:

singleton = 'hello',

2

Otra es

>>> (1, 2)[0:1] 
(1,) 

Una forma muy ofuscado, pero es una alternativa ...

4

Aunque puede definir una tupla como 'hello',. Creo que sería fácil para alguien perder la coma final si estuvieran leyendo su código. Definitivamente prefiero ('hello',) desde un punto de vista de legibilidad.

Cuestiones relacionadas