【问题标题】:How to get best two tuples out of a large list of tuples如何从大量元组中获得最好的两个元组
【发布时间】:2021-01-23 20:34:33
【问题描述】:

我有一个包含大量元组的 Python 列表。我想找到最好的 两个元组,其中包含最好的两个 ma​​x range 值。

list_ = [(55, 55), (77, 81), (95, 129)]

所以在这个例子中,我应该能够恢复(77, 81), (95, 129)。因为81-77129-95 给出了最大范围。 如何在 Python 中做到这一点?

【问题讨论】:

  • 元组是否总是排序的?也就是第一项总是低于第二项?
  • 按范围排序列表并取第一个/最后 2 个?
  • 尝试执行@DeepSpace 的建议并检查是否有明显的开销
  • 请分享您为尝试解决此问题而编写的代码,并显示结果。

标签: python python-3.x list tuples top-n


【解决方案1】:

heapq.nlargest 使用自定义键应该可以解决问题:

from heapq import nlargest
list_ = [(55, 55), (77, 81), (95, 129)]
result = nlargest(2, list_, key = lambda x: x[1] - x[0])

【讨论】:

  • 我正准备用稍微不同的方法来回答,但这个方法更干净准确。
【解决方案2】:
def getMaxTwoTuples(list_):
  max_tuple = []
  for i in range(2):
    max_tuples = [i[0]+ i[1] for i in list_]
    m = max(max_tuples)
    index  =  max_tuples.index(m)
    max_tuple.append(list_[index])
    list_.pop(index)
  return max_tuple

【讨论】:

  • 欢迎来到 Stack Overflow。通过包含对您提供的代码的解释,您的答案可能会得到改进。
猜你喜欢
  • 2011-10-03
  • 2021-05-19
  • 2017-04-19
  • 1970-01-01
  • 2022-01-20
  • 2020-09-21
  • 2019-06-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多