
>>> 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 论括号的重要性 >>> 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 tuple 的 += 调用 __add__,而 list 的 += 调用 __iadd__。 前面那个只接受 tuple ,后面那个接受 iterable 。 |