Python列表上的“ a + = b”和“ a = a + b”之间的区别

时间:2020-04-18 05:58:44

标签: python

在Python中,如果我运行

test_list = []
test_list += [1]
print(id(test_list))

我发现test_list的身份没有改变。

但是,如果我跑步

test_list = []
test_list = test_list + [1]
print(id(test_list))

输出显示我的身份已更改。

有什么区别?

我在用列表作为参数对递归函数进行编码时发现了这一点,其中由于运算符+=影响了函数外部的变量。

a += b是否与a = a + b相同?

1 个答案:

答案 0 :(得分:0)

在python中,a + = b的行为并不总是与a = a + b相同,相同的操作数在不同条件下可能会给出不同的结果。

示例1:-

list1 = [5, 4, 3, 2, 1] 
list2 = list1 
list1 += [1, 2, 3, 4] 
print(list1) 
print(list2) 

给出输出:-

[5, 4, 3, 2, 1, 1, 2, 3, 4]
[5, 4, 3, 2, 1, 1, 2, 3, 4]

示例2:-

list1 = [5, 4, 3, 2, 1] 
list2 = list1 
list1 = list1 + [1, 2, 3, 4] 

print(list1) 
print(list2) 

给出输出:-

[5, 4, 3, 2, 1, 1, 2, 3, 4]
[5, 4, 3, 2, 1]

list1的内容与上面的Example1相同,但是list2的内容不同。 [5、4、3、2、1、1、1、2、3、4] [5,4,3,2,1]

表达式list1 + = [1、2、3、4]就地修改列表,表示它扩展了列表,使得“ list1”和“ list2”仍然引用同一列表。

表达式list1 = list1 + [1、2、3、4]创建一个新列表,并将“ list1”引用更改为该新列表,而“ list2”仍引用旧列表。