之前从未在python中运行此操作,我想知道它为什么会发生以及如何避免它。当我设置y = redundanciesArray
时,我想制作数组的副本,更改某个索引处的值,根据该更改执行操作,然后将y
重置为数组的新副本。第一遍redundanciesArray = [2,1,1,1,1]
和第二遍[2,2,1,1,1]
会发生什么。它有点像y
作为指向redundanciesArray
的指针。我想我没有正确使用数组或某些东西,希望有人可以发现我在这里失踪的内容。
redundanciesArray = [1, 1, 1, 1, 1]
probabilityArray = [0.5, 0.5, 0.5, 0.5, 0.5]
optimalProbability = 0
index = -1
for i in range(0, len(redundanciesArray)):
y = redundanciesArray
y[i] = y[i] + 1
probability = calculateProbability(y, probabilityArray)
//calcuateProbability returns a positive float between 0 and 1
if(probability > optimalProbability):
optimalProbability = probability
index = i
答案 0 :(得分:1)
Python使用名称,其行为与引用或指针有些相似。这样做
y = redundanciesArray
只会使y
指向redundanciesArray
已指向的相同对象。 y
和redundanciesArray
都只是同一个对象的名称("引用")。
如果您执行y[i] = y[i] + 1
,则会修改i
和y
指向的对象中的位置redundanciesArray
。