簡體   English   中英

在 Python 中查找元組對的最小值的索引

[英]Find the index of minimum value of tuple pairs in Python

使用元組對列表n=[(266, 116), (81, 296), (148, 115), (324, 303)]我試圖有效地找到最左邊點的索引。 目前,我的代碼如下所示:

min_index = 0
for i in range(1,len(n)): 
     if points[i][0] < points[min_index][0]: 
            minIndex = i 

但對我來說,這看起來效率不高。 我還找到了一個使用 lambda function 的解決方案,它可能至少看起來更有吸引力(關於 min 函數的時間復雜度在這里)

min(n, key = lambda t: t[0])

但這給了我實際的坐標,而不是我想要的索引。 如何更改 lambda function 給我實際的索引,在時間復雜度方面有沒有更好的解決方案? 謝謝

min中使用range(len(n))而不是n

>>> min(range(len(n)), key = lambda i: n[i][0])
1

注意:循環方法並不是低效的,因為數據中沒有明顯的模式,所以你不能,例如,使用二分法(例如二進制搜索),並且min幾乎做同樣的事情,它是有時只是首選,因為它是內置的,更簡潔,更不容易出錯。

您還可以在lambda部分中enumerate以獲取索引和值:

n = [(266, 116), (81, 296), (148, 115), (324, 303)]
min_index, min_value = min(enumerate(n), key = lambda n: n[1][0])
print(min_index, min_value)   # 1 (81, 296)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM