#python
Вопрос:
Я пытался использовать цикл for для заполнения массива, используя возвращаемое значение из другой функции.
def test_weights():
w1 = 0.25
w2 = 0.5
w3 = 0.75
w4 = 1
w5 = 1.25
weights = [w1, w2, w3, w4, w5]
mse_array = []
for i in range(len(weights)):
mse_array[i] = prob3(weights[i])
Компилятор вернул
mse_array[i] = prob3(веса[i])
Ошибка индекса: индекс назначения списка выходит за пределы диапазона
Я не уверен, как это выходит за рамки, так как я начинаю с 0, он должен правильно выстраиваться с массивами и не выходить за рамки, так как это диапазон len(весов).
prob3(x) — это функция, которая возвращает значение с плавающей точкой при задании значения. В чем может быть проблема? Спасибо!
Комментарии:
1. Лучше использовать
for weight in weights
, если вам не нужен индекс списка, или использоватьfor index, weight in enumerate(weights)
, если вам нужен индекс, чем использоватьfor i in range(len(weights))
.2. Весь ваш код может быть:
mse_array = [prob3(x) for x in [0.25, 0.5, 0.75, 1, 1.25]]
Ответ №1:
Пустой список (mse_array) нельзя использовать при использовании индексов. Для работы со списками существует функция добавления (), или вы можете просто использовать обозначение» «, если функция также возвращает список
def test_weights():
w1 = 0.25
w2 = 0.5
w3 = 0.75
w4 = 1
w5 = 1.25
weights = [w1, w2, w3, w4, w5]
mse_array = []
for i in range(len(weights)):
mse_array.append(prob3(weights[i])) ## modified line