有没有其他方法来定义只有一个元素的元组?

9

我知道一种方法是通过在逗号后面添加内容:

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

源自:http://docs.python.org/tutorial/datastructures.html

如何用更多方法定义只有一个元素的元组?


7
最好只有一种明显的方法来做它。 - Ben James
1
@BenJames ...但是肯定的是“可读性很重要” :-) - Julian
4个回答

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

但是内置的语法有其存在的原因。


3
@Edan: 使用内置的方法可以减少代码量,但是逗号末尾并没有直接表明“这是一个元组”...我的眼睛可能会忽略它。 - Jason Coon
单例元组确实有些奇特,这是GVR存在的理由:http://www.python.org/search/hypermail/python-1992/0292.html - Josh Lee
1
这是一个镜像链接,用于替换上面@JoshLee评论中的错误链接:http://ftp.ntua.gr/mirror/python/search/hypermail/python-1992/0292.html - Air

5

尽管你可以将元组定义为'hello',,但我认为如果有人在阅读你的代码时可能会错过尾随的逗号。从可读性的角度来看,我绝对更喜欢('hello',)


2
另一个是:
>>> (1, 2)[0:1]
(1,)

一种非常晦涩的方式,但这确实是一种替代方法...

2

singleton = ('hello',)

我认为这种写法更加清晰,即使是 @jleedev 的写法也比较清晰。但是我个人最喜欢你使用的方法:

singleton = 'hello',


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接