初始化其他变量后,变量的原始值会丢失

时间:2019-06-24 23:43:24

标签: python

(此标签与其他标签相似,但其他标签通常是特定的)。我试图将其提高到更高的水平。

我用另一个变量"X"type(list)初始化了一个变量"arrayMetricPI"type(list)。但是当我更改("X")时,我也更改了变量("arrayMetricPI"),这对我来说没有意义? 也许是特定于Python的?

即使更改了初始化变量(此处:"arrayMetricPI"),该怎么做才能使变量的原始值保持不变(此处:"X")?

print(arrayMetricPI) # returns array "[0.0, 0.01, 0.02, 0.03,...]
X = arrayMetricPI

for xx in np.arange(0, counter, 1): 
# delete the first entry of the the array "X"

print(X)  # returns array "[0.01, 0.02, 0.03,...]
print(arrayMetricPI) # returns array "[0.01, 0.02, 0.03,...]

我希望arrayMetricPI仍以[0.0,...]开头,因为我刚刚更改了列表“ X”。

3 个答案:

答案 0 :(得分:1)

如果您的arrayMetricPI不包含子列表,则只能X = arrayMetricPI[:]

否则,您将要使用copy.deepcopy

import copy
X = copy.deepcopy(arrayMetricPI)
  

也许是特定于Python的吗?

我不知道怎么说,这是一个很棒的描述:Other languages have "variables"Python has "names"

答案 1 :(得分:1)

List是所谓的Mutable objects

我们鼓励您阅读有关该主题的文章(不是一个非常复杂的主题),但总之-

在将x = some_list分配到some_list = [1, 4, 3]的地方时,您实际上是在说“现在x会指向该列表,而其他任何想要指向该列表的人也可以这样做。对保存列表的任何变量(例如x)所做的任何更改都会影响存储在内存中的实际列表。”

答案 2 :(得分:0)

第二行使X = arrayMetricPI,因此您正在更改X值