为什么弹出/删除/添加列表会更改另一个列表的内容?

时间:2019-11-27 10:09:22

标签: python list append overwrite

为什么弹出/删除/附加列表“ var”的项会更改列表“ final”的内容?

根据我的理解,“ final”绝对不能由对“ var”使用的任何操作更改。

import re

list = ['ABC', 'ACB']
aa = list[0]
aa = re.findall('.',aa)
aa.append (aa[0])
aa.append(aa[1])


i = 0
final = []
circle = []
while i < len(list):
    circle = list[i]
    circle = re.findall('.',circle)
    circle.append(circle[0])
    circle.append(circle[1])
    final.append(circle)
    i = i + 1

print(final)
var = final[0]
print(var)
print(final)

var.append(var[2])
print(var)
print(final)

var.pop(0)
print(var)
print(final)

输出:

[['A', 'B', 'C', 'A', 'B'], ['A', 'C', 'B', 'A', 'C']]

['A', 'B', 'C', 'A', 'B']
[['A', 'B', 'C', 'A', 'B'], ['A', 'C', 'B', 'A', 'C']]

['A', 'B', 'C', 'A', 'B', 'C']
[['A', 'B', 'C', 'A', 'B', 'C'], ['A', 'C', 'B', 'A', 'C']]

['B', 'C', 'A', 'B', 'C']
[['B', 'C', 'A', 'B', 'C'], ['A', 'C', 'B', 'A', 'C']]

所以输出的最后两行应该是:

['B', 'C', 'A', 'B', 'C']
[['A', 'B', 'C', 'A', 'B'], ['A', 'C', 'B', 'A', 'C']]
根据我的理解。为什么不是这种情况?

感谢罗宾

0 个答案:

没有答案