当前位置: 首页 > 知识库问答 >
问题:

最小/最大:键如何排序?

林曦之
2023-03-14

我对min()和max()中关键参数的行为有点迷惑不解

假设我有以下列表:c=[10,11,15,25,50]

我希望max值高于20,所以我做了:max(c,key=lambda x:x>20)。结果是25,应该是50。

我希望max值低于20,所以我做了:max(c,key=lambda x:x<20)。结果是10,应该是15。

min()也是如此。如果我希望最小值大于20(min(c,key=lambda x:x>20)),则给出的值是10,而不是25。

谁能帮忙解释一下吗?我想更好地理解,以避免在处理不同条件时出现错误。

共有1个答案

衡子琪
2023-03-14

这不是使用max的正确方法,相反,您需要使用生成器表达式来过滤元素,然后取其max

>>> max(i for i in c if i > 20)
50

如果您将该条件传递给key,则该lambda的返回值将用于排序,所有值将简单地为truefalse(其中false ),因此您将获得falsey值中的第一个,在本例中为 10

key参数实际上是用于指定访问列表中每个项的特定数据段的方式。例如,假设我有这个类

class point:
    def __init__(self, x, y, z):
        self.x = x
        self.y = y
        self.z = z

如果我想根据其.y值找到最大的点,那么这是使用key参数的好时机

>>> data = [point(1,2,3), point(3,2,1), point(9,8,7)]
>>> p = max(data, key = lambda pt: pt.y)
>>> p.y
8

 类似资料:
  • 我有一个包含一些价格值的数据帧。不,我想有一个或最好的情况下有两个数据框,每篇文章的最大值和最小值没有 0 个值。 我用DT这样做(对于maxValue,一切都很完美): 但minValue Df显示0值。我也尝试过: 但是在这里我不知道如何使用 在最好的情况下,我希望每个产品的最大值和最小值都有dfs。

  • 我只是想看看我是否理解教授和在线资源所说的话。 对于heapSort算法,第一个元素的索引从0开始。 对于最大堆,如果子堆大于父堆,则percolate down应将最大子堆与其父堆交换,例如(这是用于赋值,因此我尝试发布尽可能少的代码): 所以最后,最大元素应该在索引0处。 如果这是正确的,我不理解的是heapSort实现: 最大堆中的渗滤层不应该将最大的元素放在索引0处吗?在这种情况下,为什么

  • 问题内容: 我正在使用和作为模块捆绑程序编写一个Web应用程序。到目前为止,我的代码还很轻巧,整个文件夹的大小为25 kb。 我创建的虽然是2.2 mb。使用标志运行优化后,它将捆绑包减少到700kb,这仍然非常大。 我调查了文件,文件大小为130kb。 Webpack是否可能产生如此大的文件,或者我做错了什么? webpack.config.js 编辑 package.json: 问题答案: 根

  • 问题内容: 我正在使用Ubuntu 11.04。如何找出进程的最大调用堆栈大小以及堆栈中每个帧的大小? 问题答案: 您可以使用查询最大进程和堆栈大小。堆栈框架没有固定的尺寸。它取决于每个帧需要多少本地数据(即本地变量)。 要在命令行上执行此操作,可以使用ulimit。 如果要为正在运行的进程读取这些值,我不知道执行此操作的任何工具,但是查询/ proc文件系统很容易:

  • 对于堆排序,如果我们想按升序对数组排序,那么应该在最大堆还是最小堆中转换堆?

  • 输入:7282341 输出:8743221 接受一个数字 我需要从后面开始将这些数字合并到一起,但不确定具体要做什么。