关于python:为什么局部变量会自行更新?

Why a local variable is updating itself?

本问题已经有最佳答案,请猛点这里访问。

我有以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
file = open('MyCSV.csv') # this read the Headers name
reader = csv.reader(file)
Data = next(reader,None)
Data = Data[1:]
DataTmp = Data


for item in DataM: # DataM is a list with one element from Data
    Data.remove(item) #remove one item


#
print(len(Data))
print(len(DataTmp))

因此,我打开MyCSV.csv文件,读取头行,并将其存储在变量Data中。我还做了一份由DataTmp复制的Data。最初,列表Data有10个元素。

然后,我从Data中删除了一个元素。

现在,我预计Data的长度为9DataTmp的长度仍为10。然而,我得到的答案是,DataTmp的长度也是9。为什么?我从未更改过DataTmp,并且在从Data中删除元素之前定义了它。

谢谢你的帮助!


重要的改变是

1
import copy

1
DataTmp = copy.copy(Data) # Use this instead of direct assignment.

而不是

1
DataTmp = Data

使用下面的代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import copy

file = open('MyCSV.csv') # this read the Headers name
reader = csv.reader(file)
Data = next(reader,None)
Data = Data[1:]
# DataTmp = Data
DataTmp = copy.copy(Data) # Use this instead of direct assignment.

for item in DataM: # DataM is a list with one element from Data
    Data.remove(item) #remove one item

#
print(len(Data))
print(len(DataTmp))