Python中的元组声明

Posted

技术标签:

【中文标题】Python中的元组声明【英文标题】:Tuple declaration in Python 【发布时间】:2016-04-20 22:26:30 【问题描述】:

在 python 中,可以使用括号显式声明一个元组:

>>> x = (0.25, 0.25, 0.25, 0.25)
>>> x
(0.25, 0.25, 0.25, 0.25)
>>> type(x)
<type 'tuple'>

或者,不带括号,python 会自动将其打包成一个不可变的元组:

>>> x = 0.25, 0.25, 0.25, 0.25
>>> x
(0.25, 0.25, 0.25, 0.25)
>>> type(x)
<type 'tuple'>

是否有pythonic风格来声明元组?如果有,请同时参考相关PEP或链接。

实现元组的“最终产品”没有区别,但带括号和不带括号的元组的初始化方式有区别吗(在 CPython 中)?

【问题讨论】:

相关:***.com/questions/16017811/…。 (没有任何区别 - 逗号定义元组,括号是可选的,但通常很有用。) 错了,应该是CPython 嗯...我更喜欢 x = (0.25, 0.25, 0.25, 0.25) 因为很明显 x 是一个元组。 这更像是一个真正的元组(我的意思是,就像输出一样)。 Err 抱歉,我已将其作为 ***.com/questions/16017811/… 的副本关闭,但事实并非如此。 Nikita 的答案是正确的。 【参考方案1】:

从实用的角度来看,最好始终使用括号,因为它有助于代码的可读性。正如import this moto 之一所说:

“显式优于隐式。”

还请记住,在定义单元组时,您需要一个逗号:one_tuple = (15, )

【讨论】:

一个元素元组上的点不正确。 x = 1,; x(1,) @alvas:Nikita 说:定义一个元组时,你需要一个逗号。 与括号无关。 @KevinGuan 啊,我误会了。 x=1,x=(1,) 都是合法的元组,type(x) 将给出&lt;class 'tuple'&gt;。但是x=1x=(1) 只是整数,type(x) 会在这里给出&lt;class 'int'&gt; 并且一个 zero 元素元组需要括号:().【参考方案2】:

没有特定的“pythonic”方式。除了空括号外,括号只是一个括号(控制优先级)。那就是表达式 x = 1,2,3x = (1,2,3) 相同(因为元组是在赋值之前创建的)。

可能不同的地方在于顺序很重要。例如,如果l 是一个列表或元组,则表达式1,2,l.count(1) 意味着在创建元组之前调用l.count,而(1,2,l).count(1) 首先创建元组,然后调用count。它与(2+3)*4 中的括号相同(表示先加然后乘)。

唯一需要括号的情况是创建空元组时。这是由 fx 表达式 x = () 完成的,因为没有其他方法。唯一必须使用尾随逗号的情况是创建长度为 1 的元组(即 x = 1,),因为否则无法与元素 1 区分开来。

【讨论】:

以上是关于Python中的元组声明的主要内容,如果未能解决你的问题,请参考以下文章

python中的元组

Python学习篇 Python中的元组

python中的元组

python学习之第五篇:Python中的元组及其所具有的方法

python中的元组和列表有啥区别,哪个更有效[重复]

python Python中的元组