繁体   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