Никогда не запускайте пробег по сравнению с этим на python раньше, и мне интересно, почему это происходит и как я могу его избежать. Когда я устанавливаю y = redundanciesArray
, я хочу сделать копию массива, изменить значение в каком-то индексе, действовать на это изменение, а затем сбросить y
, чтобы быть новой копией массива. Что происходит, так это то, что на первом проходе redundanciesArray = [2,1,1,1,1]
, а на втором - [2,2,1,1,1]
. Это похоже на y
, действующий как указатель на redundanciesArray
. Наверное, я не правильно использую массивы или что-то в этом роде, надеюсь, кто-то может осветить то, что мне здесь не хватает.Python for loop behavior
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
Вы хотите скопировать массив, для получения параметров см. Http://stackoverflow.com/questions/2612802/how-to-clone-or-copy-a-list-in-python – Matthew
Да, это работает, я скопировал увольнения массив вместо того, чтобы просто установить его равным. Что я действительно делаю в этом существующем коде? Сделать y указателем? – LBaelish