为什么局部变量会自我更新?

时间:2019-01-29 13:33:03

标签: python list variables

我有以下代码:

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中。我还复制了Data的{​​{1}}。列表DataTmp最初有10个元素。

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

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

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

重要的更改是

import copy

AND

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

代替

DataTmp = Data

使用以下代码。

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))