0 2当我把它交给Python时,为什么会得到一个奇怪的结果?
#tuples ~wtF?
a=()
b=(a)
c=(a,1)
len(b)
len(c)
Run Code Online (Sandbox Code Playgroud)
注意:我得到了1 2列表的预期 结果:
a=[]
b=[a]
c=[a,1]
len(b)
len(c)
Run Code Online (Sandbox Code Playgroud)
这发生在Linux上:
$ python --version
Python 2.7.2+
Run Code Online (Sandbox Code Playgroud)
因为作业,中的某种原因,这也是如此c=(a,1)?
>>> print b
()
>>> print c
((), 1)
Run Code Online (Sandbox Code Playgroud)
括号不会使它成为元组 - 逗号可以.考虑:
>>> 5 * (3 + 2)
25
Run Code Online (Sandbox Code Playgroud)
括号里面的意思是"先做这个".括号中:
b=(a)
Run Code Online (Sandbox Code Playgroud)
意思是一样的.所以,这相当于
b = a
Run Code Online (Sandbox Code Playgroud)
所以b is a会True.
要创建b包含空元组的元组,您需要执行以下操作:
b = a,
Run Code Online (Sandbox Code Playgroud)
同样,括号不会使它成为一个元组(除了特殊情况()是空元组),逗号就是这样.
对于编辑,
c = (a, 1)
Run Code Online (Sandbox Code Playgroud)
因为a = (),这与以下相同:
c = ((), 1)
Run Code Online (Sandbox Code Playgroud)
即,它是一个包含空元组和元组的元组1.()永远是空元组(与[]空列表相同),但这是括号唯一表示'元组'的时间.以上内容与:
c = (), 1
Run Code Online (Sandbox Code Playgroud)
虽然一般人做包括这里的括号(和repr和str元组总是这样),这是风格,而不是因为他们是有意义的.
(a)只是一个表达a,就像(1+2)是1+2.
如果你想要1项元组,你就写(a,).BTW相同的语法适用于列表:[a,].并且还有函数参数列表.在逗号分隔列表所在的任何地方都可以使用尾随逗号.