2010-02-17 5 views
6

Je sais c'est une façon, en plaçant une virgule:Existe-t-il plusieurs façons de définir un tuple avec un seul élément?

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

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

Y at-il d'autres façons de définir un tuple avec seulement 1 article?

+6

* "Il devrait y avoir une - et de préférence une seule - façon évidente de le faire." * –

+0

@BenJames ... mais sûrement _ "La lisibilité compte" _ :-) – Julian

Répondre

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

Mais la syntaxe intégrée est là pour une raison.

+1

La première version est beaucoup plus claire, OMI. –

+2

@Edan: Moins de code en utilisant la virgule intégrée, mais la virgule de fin ne saute pas vraiment un mot "TUPLE!" ... mes yeux pourraient manquer. –

+0

Les tuples singleton sont quelque chose d'une curiosité, pour être sûr. Voici la justification de GVR pour leur existence: http://www.python.org/search/hypermail/python-1992/0292.html –

2

singleton = ('hello',)

Ceci est plus clair, je suppose, et @jleedev encore plus clair. Mais j'aime la méthode que vous avez utilisé le meilleur:

singleton = 'hello',

2

Un autre est

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

Une manière très brouillée, mais il est une alternative ...

4

Même si Vous pouvez définir un n-uplet comme 'hello', Je pense qu'il serait facile pour quelqu'un de manquer la virgule finale s'il lisait votre code. Je préfère nettement ('hello',) à partir d'un point de vue de lisibilité.

Questions connexes