首页 > 解决方案 > 这段代码如何从一串整数中提取最大值和最小值?

问题描述

这是我在 codewars.com 上找到的解决这个 kata的解决方案。

def high_and_low(numbers):
  return " ".join(x(numbers.split(), key=int) for x in (max, min))

我不明白这个解决方案是如何工作的,x 函数看起来像一个排序函数,那么为什么 OP 没有使用排序?另外,元组 (max,min) 上的 for 循环如何提取最大值和最小值?我迷路了。任何与此相关的示例/链接也受到赞赏。提前感谢您的努力。

标签: pythonfor-looptuplesmaxmin

解决方案


根据max的文档(以及类似的 min),key=int用于对可迭代对象进行排序,在这种情况下,它是您在执行numbers.split(). 然后 max 和 min 将从列表中选择最大和最小整数

for x in (max, min)本质上用函数替换 xmax并且min

一个稍微简单的方法可能是首先提取整数列表,然后对其应用 max 和 min

def high_and_low(numbers):

  nums = list(map(int, numbers.split()))
  return min(nums), max(nums)

推荐阅读