簡體   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