繁体   English   中英

IndexError:列出索引超出范围,如果

[英]IndexError: list index out of range in if

我是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))

感谢您的帮助!

不要索引到列表中(如果不需要的话)-遍历其值。

检查您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]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM