我有两个列表:
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]。 帮助将不胜感激。
答案 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
的最后一个索引。