意外的Python元组行为

2024-05-01 21:49:00 发布

您现在位置:Python中文网/ 问答频道 /正文

为什么我把这个给Python时得到一个奇怪的0 2结果?在

#tuples ~wtF?
a=()
b=(a)
c=(a,1)
len(b)
len(c)

注意:对于列表,我得到一个预期的1 2结果:

^{pr2}$

这在Linux上发生:

$ python --version
Python 2.7.2+

编辑:迄今为止的答案

那么这是因为c=(a,1)赋值中的,?在

>>> print b
()
>>> print c
((), 1)

Tags: 答案编辑列表lenversionlinuxprint赋值
2条回答

方括号不是元组,逗号是元组。考虑:

>>> 5 * (3 + 2)
25

括号里的意思是“先做这个”。括号:

^{pr2}$

意思是一样的。所以,这相当于

b = a 

所以b is a将是{}。在

要使b成为包含空元组的元组,需要执行以下操作:

b = a, 

同样,方括号并不能使其成为元组(除了()是空元组的特殊情况外),逗号可以。在

为了编辑

c = (a, 1)

由于a = (),这与:

c = ((), 1)

也就是说,它是一个包含空元组和1的元组。()总是空元组(与[]是空列表相同),但这是唯一一次方括号表示“元组”的时候。以上同:

c = (), 1

尽管人们通常会在这里包括方括号(元组的repr和{}),但这是为了风格,而不是因为它们有意义。在

(a)只是一个表达式a,就像(1+2)就是{}。在

如果你想要1项元组,你可以写(a,)。 顺便说一句,同样的语法适用于列表:[a,]。还有函数参数列表。在逗号分隔列表的任何地方都可以使用尾随逗号。在

相关问题 更多 >