- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
假设有一个嵌套列表,例如:
my_list = [[1, 2, 21], [1, 3], [1, 2]]
当函数 min()
被调用时:
min(my_list)
收到的输出是
[1, 2]
为什么以及它是如何工作的?它有哪些用例?
最佳答案
比较 Python 中的列表(和其他序列)lexicographically而不是基于任何其他参数。
Sequence objects may be compared to other objects with the same sequence type. The comparison uses lexicographical ordering: first the first two items are compared, and if they differ this determines the outcome of the comparison; if they are equal, the next two items are compared, and so on, until either sequence is exhausted.
来自 lexicographic sorting 上的维基百科页面
lexicographic or lexicographical order (also known as lexical order, dictionary order, alphabetical order or lexicographic(al) product) is a generalization of the way the alphabetical order of words is based on the alphabetical order of their component letters.
min
函数返回 iterable 中的最小值。所以[1,2]
的字典值是该列表中最少的。您可以使用 [1,2,21]
进行检查
>>> my_list=[[1,2,21],[1,3],[1,2]]
>>> min(my_list)
[1, 2]
min
这种情况下发生了什么? ?my_list
上的元素明智, 首先 [1,2,21]
和 [1,3]
.现在来自文档
If two items to be compared are themselves sequences of the same type, the lexicographical comparison is carried out recursively.
因此 [1,1,21]
的值小于 [1,3]
, 因为 [1,3]
的第二个元素,即 3
按字典顺序高于 [1,1,21]
的第二个元素的值,即 1
.
现在比较 [1,2]
和 [1,2,21]
,并从文档中添加另一个引用
If one sequence is an initial sub-sequence of the other, the shorter sequence is the smaller (lesser) one.
[1,2]
是 [1,2,21]
的初始子序列.因此 [1,2]
的值整体小于[1,2,21]
.因此[1,2]
作为输出返回。
这可以通过使用 sorted
来验证。功能
>>> sorted(my_list)
[[1, 2], [1, 2, 21], [1, 3]]
如果列表包含重复的最小元素返回第一个
>>> my_list=[[1,2],[1,2]]
>>> min(my_list)
[1, 2]
这可以通过 id
来确认。函数调用
>>> my_list=[[1,2],[1,2]]
>>> [id(i) for i in my_list]
[140297364849368, 140297364850160]
>>> id(min(my_list))
140297364849368
min
中的字典比较?如果所需的比较不是字典顺序,那么 key
可以使用参数(如 Padraic 所述)
min
函数有一个名为 key
的附加可选参数 . key
参数接受一个函数。
The optional key argument specifies a one-argument ordering function like that used for
list.sort()
. The key argument, if supplied, must be in keyword form (for example,min(a,b,c,key=func)
).
例如,如果我们需要长度最小的元素,我们需要使用 len
功能。
>>> my_list=[[1,2,21],[1,3],[1,2]]
>>> min(my_list,key=len) # Notice the key argument
[1, 3]
我们可以看到这里返回了第一个最短的元素。
直到 Python2
如果列表是异类的类型名称考虑排序,检查Comparisions ,
Objects of different types except numbers are ordered by their type names
因此,如果您输入 int
和 list
在那里你会得到最小的整数值i
低于 l
.同样'1'
将比这两者都具有更高的值(value)。
>>> my_list=[[1,1,21],1,'1']
>>> min(my_list)
1
Python3 及更高版本
但是,Python3 中删除了这种令人困惑的技术。它现在引发了 TypeError
。阅读 What's new in Python 3.0
The ordering comparison operators (
<
,<=
,>=
,>
) raise aTypeError
exception when the operands don’t have a meaningful natural ordering. Thus, expressions like1 < ''
,0 > None
orlen <= len
are no longer valid, and e.g.None < None
raisesTypeError
instead of returningFalse
. A corollary is that sorting a heterogeneous list no longer makes sense – all the elements must be comparable to each other.
>>> my_list=[[1,1,21],1,'1']
>>> min(my_list)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unorderable types: int() < list()
但它适用于可比较的类型,例如
>>> my_list=[1,2.0]
>>> min(my_list)
1
在这里我们可以看到 list
包含 float
值和 int
值(value)观。但是作为 float
和 int
是可比较的类型,min
函数在这种情况下有效。
关于python - 嵌套列表上的 min/max 函数如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34050113/
我正在尝试模拟 Max-Min 和 Min-Min 调度算法,并在模拟中自己编写代码。但是不太了解如何在代码中实现它们的工作方式。 例如,在 FCFS 算法中我使用了 3 个服务器 (vms),每个服
有人可以帮我实现这个功能吗?此功能位于相机应用程序内部,该应用程序使用过滤算法来检测颜色变化等方面的差异。语法对我来说非常困难。我不知道如何处理参数中的指针、最小和最大变量语法、什么是增量等?有人可以
我遇到如图所示的表数据情况,我想从每个唯一成员中选择 min(code) 和 secondary_min(code) 。 即期望的输出看起来像 member | min(code) | s
我有一个查询,选择每小时的最小值: SELECT MIN(price), HOUR(timestamp), DATE(timestamp) FROM `scan` GROUP BY DATE(time
#include int min(int pArray[], int nrOfArrayElements) { min = pArray[0]; for (int i = 1; i
generate(vec.begin(), vec.end(), [=](){return static_cast(static_cast(ran()) /RAND_MAX*(max-min)+min
当 min 已经被定义为宏时,如何调用 std::min? 最佳答案 (std::min)(x,y) min 周围的括号防止宏扩展。这适用于所有函数宏。 关于c++ - 当 min 被定义为宏时如何调
我正在尝试对(几个)SQL 数据库中的现有数据负载进行一些转换分析。 数据结构本身非常简单。它只是一个 Actor 列表(比如 user_id)和他们所做的事情的名称。它看起来像这样(还有其他数据,但
我正在尝试根据浏览器的最小高度和最小宽度更改我页面上的 CSS,所以我正在使用它: @media (min-height: 500px), (min-width: 580px) { /* CSS
我有两张 table 。第一个表显示 id_product 和 Product_price_value。下面我将向您展示一个示例(在我的数据库中有很多行) 表:主产品 ID_product: prod
我有两个表:商品和价格(一对多) 每个项目都有一个默认价格,但是这个价格可以在第二个表中被覆盖(在某些情况下)。 首先,我在获取所有项目并预先计算最低价格 - 默认价格与其覆盖当前价格(如果有的话?)
我使用以下命令用 pandas 读取了此 Excel 工作表(仅“DATEHEUREMAX”列): xdata = read_excel('Data.xlsx', 'Data', usecols=['
我想了解min-max堆删除的过程是如何工作的,我已经搜索了它的伪代码但一无所获,而且我似乎不能在这里询问伪代码。所以这是我的问题 谁能展示“删除最小元素 7”的逻辑,至少让我知道伪代码“感觉如何”?
将 std::min 传递给函数不会编译。我将 std::min 的 libcpp 声明复制到我的源文件中并且它有效。 std 版本有什么问题? clang 和 gcc 也是如此。在 Godbolt
请看这个例子:http://jsfiddle.net/vrgT3/5/ 我用 overflow: auto; 创建了一个 250x250px 父 div,因此当内容溢出框时会出现滚动条。我设置了蓝色背
假设我有 4 个变量 a、b、x、y和一个约束 min(a,b) > min(x,y)。 我如何在 pulp python 中表示这个程序? 最佳答案 好的。所以,我发布(删除)的第一个答案有点仓促,
我刚刚经历了 THIS fiddle 和代码如下所示: 现在,当我使用 View 框并将值更改为 viewbox="100 100 225 225" 时它具有执行以下操作的效果
我有 minSdkVersion 16,我想搜索正确的支持库以便使用方法 setActionBar()(在 api 级别 21 中引入)。 我应该使用哪个 appcompat 版本?当然,我不想使用旧
bootstrap.min.css 和 bootstrap.min.js 有什么区别?为什么需要包含 bootstrap.min.js? 和 最佳答案 它们都是完整 Bootstrap 样式 (C
我是一名优秀的程序员,十分优秀!