Не индексировать в списки (если это не нужно) - перебирать его значения.
Проверьте ваши 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]