Индекс списка находится вне диапазона — Python

#python-3.x #for-loop

#python-3.x #для цикла

Вопрос:

У меня эта распространенная ошибка в этом коде forloop, и я хотел бы получить чью-нибудь помощь.

 m, n = 100, 4
x = np.ones(n)
for i in range(m):
    y_1 = my_func(x, i)
    y_2 = my_func(y_1, i 1)
    R = 2*y_2 - y_1
    R12 = 0.5*(x - R)
  

Я понимаю, что я получил эту ошибку из-за i 1, но я не знаю, как это исправить. Что я намерен сделать, так это применить my_func ко всем m парам. То есть примените my_func к m = 0, а затем m = 1 и выполняйте цикл, пока я не дойду до 100. Как только я доберусь до 100, я хочу, чтобы forloop применил его к m = 100, а затем m = 0. Но я получаю эту ошибку из-за того, что индекс списка находится вне диапазона.

Я буду признателен за любую помощь в этом отношении.

Комментарии:

1. Вы хотите, чтобы это применялось к m = 100 и m = 1 или m = 100 и m = 0? Последнее будет обтекаться, и вы можете изменить i 1 на (i 1) % m .

2. Да. На самом деле я имел в виду последнее. Ваше предложение в точку! Спасибо, Марио Ишак

Ответ №1:

вы получаете это, потому что, когда цикл достигает конца списка, он добавляет 1 . например, если в вашем списке всего 10 элементов, ваша функция укажет 11, поэтому у вас будет ошибка, чтобы ответить на ваш вопрос, вы можете использовать приведенный ниже код :

 m, n = 100, 4
x = np.ones(n)
for i in range(m-1):
    y_1 = my_func(x, i)
    y_2 = my_func(y_1, i 1)
    R = 2*y_2 - y_1
    R12 = 0.5*(x - R)