跟踪列表中的索引

时间:2019-06-07 09:24:44

标签: python-3.x

我有两个列表:

limits = [0.09090909,0.18181818,0.27272727]
res = [0.001,0.002,0.0923,0.0978,0.19374,0.21838]

限制列表指定范围,并且我想查看 res 中有多少个值小于例如限制中的第一个值,依此类推。在另一个列表中,我想存储值小于0.09的res的最后一个索引,值小于0.1818的res的最后一个索引,依此类推。 因此结果将是:

track = [1,3,5]

但是我的代码没有这样做。到目前为止,我的代码是:

index = 0 ##this variable keeps track of where we are in limits list.
counter = 0 ## keeps track of indices in res list
for each_position in res:
    if each_position <= limits[index]:
        counter += 1
    else:
        track.append(counter)
        index += 1

我从这段代码中得到的是[2,3],而输出应该是[1,3,5]。 帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

稍微修改一下循环。与其先遍历结果,不如遍历极限。然后针对每个限制检查结果。每当您在res中遇到大于限制的值时,请在track列表中附加上一个索引,跳出内循环并继续进行剩余限制。

for limit in limits:
    for index, value in enumerate(res):
        if value > limit:
            track.append(index - 1)
            break
        if len(res)-1 == index:
            track.append(index)

编辑:对不起。如果在res中找不到大于限制的值,请存储res的最后一个索引。