我有一个表格的结构:
>>> items
[([[0, 1], [2, 20]], 'zz', ''), ([[1, 3], [5, 29], [50, 500]], 'a', 'b')]
每个元组中的第一项是范围列表,我想创建一个生成器,根据起始索引以升序为我提供范围。
由于范围列表已经按照它们的起始索引排序,这个操作很简单:它只是一个排序合并。我希望以良好的计算效率来做到这一点,所以我认为隐式跟踪我的合并状态的一种好方法是简单地从具有最小起始索引的元组列表中弹出前面范围列表。
我可以使用 min()
来获得 [0, 1]
这是我想要的第一个,但是我如何获得它的索引呢?
我有这个:
[ min (items[i][0]) for i in range(len(items)) ]
这给了我每个列表中的第一项,然后我可以通过某种方式 min()
,但是一旦任何列表变为空,它就会失败,而且还不清楚如何获取使用 pop()
的索引,而不在列表中查找它。
总结一下:想要构建为我返回的生成器:
([0,1], 'zz', '')
([1,3], 'a', 'b')
([2,20], 'zz', '')
([5,29], 'a', 'b')
([50,500], 'a', 'b')
或者更高效,我只需要这些数据:
[0, 1, 0, 1, 1]
(我想取前面的元组的索引)
最佳答案
from operator import itemgetter
index, element = max(enumerate(items), key=itemgetter(1))
返回items
中最大元素的索引和元素本身。
关于python - 在 Python 中查找最小值或最大值的值的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16945518/