在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
相同?
答案 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”仍引用旧列表。