[英]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.