IndexError: перечислить индекс вне диапазона в случае, если

Я чрезвычайно новичок в Python. У меня есть некоторый код в R, который я пытаюсь переписать в Python, и я столкнулся с проблемой, на которую я не могу найти ответ - извинения, если на этот вопрос уже был дан ответ, или ответ очевиден, я искал и не могу исправить мою проблему.

У меня есть список "высота", который представляет собой столбец из 481 чисел из электронной таблицы. Я хочу использовать hrc, список от минимальных до максимальных значений высоты, такой же длины, что и список высот, но все значения расположены на одинаковом расстоянии. Для каждого значения в hrc я хочу запустить его через следующий код, но я получаю Indexerror: список индексов вне диапазона.

hrc = np.linspace(min(height),max(height),len(height))
Qrc = []
for i in range(0,len(hrc)): 
  if(hrc[i]<0.685): 
      Qrc.append(30.69*((hrc[i]-0.156)**1.115))
  elif(0.685<=hrc[i] and hrc[i]<1.917):
      Qrc.append(27.884*((hrc[i]-0.028)**1.462))
  elif(1.917<=hrc[i]):
      Qrc.append(30.127*((hrc[i]-0.153)**1.502))

Я ценю любую помощь!

1 ответ

Не индексируйте в списки (если вам не нужно) - итерируйте по его значениям.

Проверьте свои if условия, вы можете упростить их - если подойдет более низкий диапазон, следующему диапазону не нужно проверять, больше ли значение, чем нижний диапазон (если это было бы, вы бы не проверяли это значение сейчас):

import numpy as np
height = [i/100.0 for i in range(0,200,20)]
hrc = np.linspace(min(height),max(height),len(height))

Qrc = []
for value in hrc: 
    if value < 0.685 : 
        Qrc.append(30.69*((value-0.156)**1.115))
    elif value < 1.917 :
        Qrc.append(27.884*((value-0.028)**1.462))
    else:
        Qrc.append(30.127*((value-0.153)**1.502))

print(len(height))  # 10
print(len(hrc))     # 10

print(hrc)   
print(Qrc)   

Выход:

[0.  0.2 0.4 0.6 0.8 1.  1.2 1.4 1.6 1.8]
[nan, 0.942858721586344, 6.367024848753282, 12.411632276269644, 
 19.100800437337597, 26.749961012743743, 35.16634580199501, 
 44.275837504844475, 54.021755132798525, 64.35896171368269]
Другие вопросы по тегам