我有一个形式的结构:>>> 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](我要放在最前面的元组的索引)
3 回答

吃鸡游戏
TA贡献1829条经验 获得超7个赞
from operator import itemgetter
index, element = max(enumerate(items), key=itemgetter(1))
返回其中最大元素的索引items以及元素本身。
添加回答
举报
0/150
提交
取消