繁体   English   中英

查找大于某个值的嵌套列表的索引

[英]Finding index of nested list greater than a value

我有一个嵌套列表

l1 = [ [0.1*x, 0.5*x] for x in range(6) ]

这使

[[0.0, 0.0], [0.1, 0.5], [0.2, 1.0], [0.3, 1.5], [0.4, 2.0], [0.5, 2.5]]

假设val=0.35是一个变量。 我试图找到l1[x][0]>val的最小索引x ,在本例中为4

我想使用这里给出的迭代器方法: https://stackoverflow.com/a/2236935/11638153

这是使用方法的另一种方式:

def get_smallest_index(list1):
    for i, l in enumerate(list1):
        if l[0] > val:
            return i
    return 0


if __name__ == '__main__':
    l1 = [[0.1*x, 0.5*x] for x in range(6)]
    val = 0.35
    print(get_smallest_index(l1))

您可以将min - function 与enumerate结合使用以实现:

values = [[0.0, 0.0], [0.1, 0.5], [0.2, 1.0], [0.3, 1.5], [0.4, 2.0], [0.5, 2.5]]

k = 0.35
idx = min( i for i,v in enumerate(values) if v[0] > k)

print(idx)

给你

4

但这不是最优的,最好使用带枚举的普通循环并从中中断,因为这段代码必须迭代所有元素,一旦找到第一个值,循环就会结束。

如果您愿意转换为NumPy数组,您可以这样做:

l1 = np.array(l1)
val = 0.35

try:
  idx = np.where(l1[:, 0] > val)[0][0]
except:
  idx = None

try, except块只是为了捕捉l1中没有idx满足要求的情况。

我使用next(x[0] for x in enumerate(l11) if x[1][0] > val )解决了这个问题

暂无
暂无

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

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