【问题标题】:how do I get both the maximum and minumum out of list如何从列表中获取最大值和最小值
【发布时间】:2020-04-20 08:34:39
【问题描述】:

我有两个元组,例如

tup1 = (200,(b,5),(a,5))
tup2 = (500,(b,7),(a,3))

首先,我想找到第一个元素最高的元组,但如果它们相同,我想找到第二个元素最低的元组。但是如果前两个元素等于另一个元组的前两个元素,我必须拥有具有最小第三个元素的元组。我怎样才能正确地做到这一点?

对于此示例,结果必须为 tup_end = (500,(b,7),(a,3)),因为 tup2 的第一个元素大于 tup 的第一个元素。

如果
tup1 = (200,(b,5),(a,5)) tup2 = (200,(b,7),(a,3))
结果必须是tup_end = (200,(b,5),(a,5)),因为 tup1 和 tup2 的第一个元素相等,但 tup1 的第二个元素小于 tup2 的第二个元素

【问题讨论】:

  • 到目前为止你尝试过什么?您的示例的预期输出是什么?
  • 你不能做一个循环并检查所有这些吗?
  • 请添加更完整的示例和预期输出
  • tup_end = min([tup1, tup2], key=function_which_create_object_to_compare) ?
  • 否,因为如果第一个元素不相同,我想接收具有最大第一个元素的元组

标签: python compare max


【解决方案1】:

您可以将min(..., key=function) 与创建具有负第一个值的项目的函数一起使用,然后您必须找到最小的-first 和最小的其他值——而不是最大的first 值和最小的其他值——所以您可以将min() 用于元组中的所有值

def create(item):
    first = item[0]
    rest = item[1:]
    return (-first, *rest)

a = 0
b = 0

tup1 = (200, (b,5), (a,5))
tup2 = (500, (b,7), (a,3))

tup_end = min([tup1, tup2], key=create)
print(tup_end)

tup1 = (200,(b,5),(a,5))
tup2 = (200,(b,7),(a,3))

tup_end = min([tup1, tup2], key=create)
print(tup_end)

结果

(500, (0, 7), (0, 3))
(200, (0, 5), (0, 5))

【讨论】:

    【解决方案2】:

    使用以下代码:

    lst = [2, 6, 8, 4, 3] # example of numeric lst
    

    获取最大值:

    print(max(lst)) # printed 8
    

    获取最小值:

    print(min(lst)) # printed 2
    

    不要忘记使用int(lst) 来确保它由数值组成。

    您可以使用以上功能帮助您轻松完成练习

    也适用于元组

    【讨论】:

      猜你喜欢
      • 2020-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-24
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 2021-09-17
      相关资源
      最近更新 更多