相关疑难解决方法(0)

list .__ iadd__和list .__ add__的不同行为

考虑以下代码:

>>> x = y = [1, 2, 3, 4]
>>> x += [4]
>>> x
[1, 2, 3, 4, 4]
>>> y
[1, 2, 3, 4, 4]
Run Code Online (Sandbox Code Playgroud)

然后考虑这个:

>>> x = y = [1, 2, 3, 4]
>>> x = x + [4]
>>> x
[1, 2, 3, 4, 4]
>>> y
[1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

为什么这两个有区别?

(是的,我试着寻找这个).

python list

12
推荐指数
2
解决办法
4936
查看次数

添加到列表时随机自动装箱/铸造

为什么这样呢

l = [1,2,3]
l += 4,5,6
Run Code Online (Sandbox Code Playgroud)

工作,而这

l = [1,2,3] + (4,)
Run Code Online (Sandbox Code Playgroud)

才不是?

如果我尝试第二个,我得到一个TypeError: can only concatenate list (not "tuple") to list,这是有道理的.

但第一个版本应该做同样的事情.在第二行中,4,5,6应该创建一个元组,如下例所示:

>>> t = 4,5,6
>>> type(t)
<type 'tuple'>
Run Code Online (Sandbox Code Playgroud)

创建元组后,+ =应该只添加到列表中l.所以这里也应该抛出某种错误,但事实并非如此.

有谁知道这里发生了什么?

这种行为在Python 2.7.11和Python 3.5.1之间是一致的.

python list

8
推荐指数
0
解决办法
58
查看次数

为什么+ =运算符的工作方式与+不同,并为python字典赋值运算符?

有人可以解释一下这种行为:

>>> a = {'hello':'world' , 'good':'food'}
>>> b = [1,2]
>>> b = b + a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only concatenate list (not "dict") to list
>>> b += a
>>> b
[1, 2, 'good', 'hello'] <--- Why do the keys get added when dict cannot be added to a list
>>> 
Run Code Online (Sandbox Code Playgroud)

python

7
推荐指数
1
解决办法
151
查看次数

列表扩展奇怪的行为

在Python(2.7)中发现了前所未有的有趣之处.

这个:

a = []
a += "a"
Run Code Online (Sandbox Code Playgroud)

工作和结果是:

>>> a
>>> ["a"]
Run Code Online (Sandbox Code Playgroud)

a = []
a = a + "a"
Run Code Online (Sandbox Code Playgroud)

>>> TypeError: can only concatenate list (not "str") to list
Run Code Online (Sandbox Code Playgroud)

有人可以解释原因吗?谢谢你的回答.

python list

6
推荐指数
2
解决办法
204
查看次数

标签 统计

python ×4

list ×3