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)
将给出<class 'tuple'>
。但是x=1
和x=(1)
只是整数,type(x)
会在这里给出<class 'int'>
。
并且一个 zero 元素元组需要括号:()
.【参考方案2】:
没有特定的“pythonic”方式。除了空括号外,括号只是一个括号(控制优先级)。那就是表达式 x = 1,2,3
与 x = (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中的元组声明的主要内容,如果未能解决你的问题,请参考以下文章