(此标签与其他标签相似,但其他标签通常是特定的)。我试图将其提高到更高的水平。
我用另一个变量"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”。
答案 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值