首页 > 解决方案 > 为什么 max(*list) 和 max(list) 在 python 中做同样的事情?

问题描述

请参见下面的示例:

>>>f = [[1],[2],[3]]
>>>max(f)
Out[21]: [3]
>>>max(*f)
Out[22]: [3]

解包运算符在这里没有效果,我正在尝试解包列表并获得矩阵的最大值(两个暗列表)。

标签: pythonargument-unpacking

解决方案


max提及的文档:

内置最大值

最大(可迭代,* [,键,默认])

最大值(arg1,arg2,*args[,键])

...

如果提供了一个位置参数,它应该是一个可迭代的。返回可迭代对象中最大的项目。如果提供了两个或更多位置参数,则返回最大的位置参数。

在第一种情况下,您有一个位置参数,在第二种情况下,您有多个。


为了得到你想要的,这是你可以尝试的矩阵中的最大条目

max(entry for row in matrix for entry in row)

这会将一个参数传递给 max 函数,该函数是一个迭代矩阵中所有条目的生成器 - 触发第一个找到可迭代最大值的情况。


推荐阅读