>>> a=()
>>> a
()
>>> a+=1,
>>> a
(1,)
>>> a=[]
>>> a+=1,
>>> a
[1]
1
sinux 2016-08-24 18:06:28 +08:00
这样理解:“这么写根本就是错的”。
|
2
wlsnx 2016-08-24 18:09:25 +08:00 1
论括号的重要性
>>> a=() >>> a () >>> a+=(1,) >>> a (1,) >>> a=[] >>> a+=[1,] >>> a [1] |
7
wlsnx 2016-08-24 18:13:37 +08:00
|
10
sinux 2016-08-24 18:33:16 +08:00
@wlsnx @lixia625
噢,搞清楚了,这和省不省略括号没关系 省略了括号的 1, 永远都会是 tuple 问题的根源在于 += list += 会被解释为 list.extend() 这个方法接受一切可迭代对象, tuple 自然也是,所以 list.extend((1,2)) 也是成功的咯 然后你莫名其妙的用一个 list 直接加上一个 tuple 还是会告诉你报错的。 TypeError: can only concatenate list (not "tuple") to list 参考: http://stackoverflow.com/questions/13332987/list-tuple-vs-list-list-tuple |
11
jugelizi 2016-08-24 18:44:36 +08:00
两个 tuple 连接也没啥问题啊
|
12
wizardforcel 2016-08-25 12:21:52 +08:00 1
tuple 的 += 调用 __add__,而 list 的 += 调用 __iadd__。
前面那个只接受 tuple ,后面那个接受 iterable 。 |