Python for循环行为

时间:2016-03-16 18:53:41

标签: arrays python-3.x for-loop

之前从未在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

1 个答案:

答案 0 :(得分:1)

Python使用名称,其行为与引用或指针有些相似。这样做

y = redundanciesArray

只会使y 指向redundanciesArray已指向的相同对象。 yredundanciesArray都只是同一个对象的名称("引用")。

如果您执行y[i] = y[i] + 1,则会修改iy指向的对象中的位置redundanciesArray