Python 自始至终循环

Python 自始至终循环,python,algorithm,while-loop,Python,Algorithm,While Loop,首先,我使用python 2天,并有更多的问题。 在他们的下面 我有一个列表(3297个项目),我想从末尾找到第一个项目的索引,其中值!='楠 示例:(索引、值) 如果希望找到索引为-3295的项目 我的代码(从头到尾,一步一步) 运行并获取错误 回溯(最近一次呼叫最后一次): 文件“/demo.py”,第37行,在 如果不是数学,isnan(lasarr[i]): 索引器:索引超出范围 我做错了什么?您的起点超出了列表中的最后一项。考虑 >>> l = ["a", "b",

首先,我使用python 2天,并有更多的问题。 在他们的下面

我有一个列表(3297个项目),我想从末尾找到第一个项目的索引,其中值!='楠

示例:(索引、值)

如果希望找到索引为-3295的项目

我的代码(从头到尾,一步一步)

运行并获取错误

回溯(最近一次呼叫最后一次):
文件“/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