Python 自始至终循环
首先,我使用python 2天,并有更多的问题。 在他们的下面 我有一个列表(3297个项目),我想从末尾找到第一个项目的索引,其中值!='楠 示例:(索引、值) 如果希望找到索引为-3295的项目 我的代码(从头到尾,一步一步) 运行并获取错误Python 自始至终循环,python,algorithm,while-loop,Python,Algorithm,While Loop,首先,我使用python 2天,并有更多的问题。 在他们的下面 我有一个列表(3297个项目),我想从末尾找到第一个项目的索引,其中值!='楠 示例:(索引、值) 如果希望找到索引为-3295的项目 我的代码(从头到尾,一步一步) 运行并获取错误 回溯(最近一次呼叫最后一次): 文件“/demo.py”,第37行,在 如果不是数学,isnan(lasarr[i]): 索引器:索引超出范围 我做错了什么?您的起点超出了列表中的最后一项。考虑 >>> l = ["a", "b",
回溯(最近一次呼叫最后一次):
文件“/demo.py”,第37行,在
如果不是数学,isnan(lasarr[i]):
索引器:索引超出范围
我做错了什么?您的起点超出了列表中的最后一项。考虑
>>> l = ["a", "b", "c"]
>>> len(l)
3
>>> l[2]
'c'
列表索引以0
开始编号,因此l[3]
会引发一个索引器
i = len(lasarr)-1
修复此问题。您的代码是否正在生成索引器?应该;-)lasarr
有3297个项目,lasarr[0]
通过lasarr[3296]
包括在内lasarr[3297]
不是列表的一部分:这是列表末尾的一个位置。改为按如下方式启动代码:
i = len(lasarr) - 1
然后,i
将为列表中的最后一个元素编制索引。由于您的列表很短,只需对其进行筛选并获取最后一项(及其索引):
您从错误的位置开始,数组从0
开始索引,因此i=len(lasarr)-1的位置不正确
lasarr = [378.966, 378.967, 378.968, 378.969, nan]
for i in range(len(lasarr) - 1, -1,-1):
if not math.isnan(lasarr[i]):
break
代码中有语法错误,解决方案不正确。您的方法将查找找到nan
的第一个索引,而不是从末尾算起的不是nan
值的最后一个数字。
i = len(lasarr)-1
i = len(lasarr) - 1
l = ['a', 'b', 'nan', 'c', 'nan']
lastindex = [x for x in enumerate (l) if x [1] != 'nan'] [-1] [0]
print (lastindex)
lasarr = [378.966, 378.967, 378.968, 378.969, nan]
for i in range(len(lasarr) - 1, -1,-1):
if not math.isnan(lasarr[i]):
break