Python3的运行结果难以理解,如图,为何两次print(a)的输出不一致?

如题所述

第1个回答  2021-10-08
data = Data 这句改成data = Data.copy() 就可以了。
修改:加上import copy
然后 data = Data 这句改成data = copy.deepcopy(Data)

非常抱歉,第一次看的时候没注意到是两层的list
具体原因的话是默认情况下python对list dict 以及用类创建的对象的复制并不是复制它们所有的数据,依我从C++过来的感觉,只是复制了指向数据的指针。
例如:a = 1
b = a
b += 1 #a不会被修改
但是 a = [1, 2, 3]
b = a
b[0] = 4 #会把a也给修改
所以我第一次提议用Data.copy()来复制完整的列表,但是没注意到列表有两层,这样只能复制外层。所以要换成深拷贝。
我并没有仔细学过python语法,很多是通过C++理解的,可能讲不太清楚。忘记在哪里看到过相关讲解了。追问

好像有点明白了,多谢!

本回答被提问者采纳