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