我想提高对内置key
函数的max
自变量的理解。请考虑以下示例:
我有一个列表列表,我想找到长度最大的列表。 我可以写一个简单的解决方案:
maximum = 0
for l in lists:
maximum = max(maximum, len(l))
但是,我更希望避免使用key
的{{1}}参数进行显式的for循环。据我了解,该键会将其参数应用于输入中的每个元素,然后比较这些输出。所以这应该工作:
max
我认为它应该起作用,因为根据我的理解(显然是错误的),上述声明等同于将长度应用于每个元素,然后调用maximum = max(lists, key=len)
:
max
我想念什么?
答案 0 :(得分:2)
我认为它应该起作用,因为根据我的理解(显然是错误的),上述声明等同于将长度应用于每个元素,然后调用
max
:
否,代码
maximum = max(lists, key=len)
意味着,从lists
中找到一个最大值为len(element)
的“元素”
鉴于此,您打算寻找len(element)
的值。您代码的一行高音:
maximum = 0
for l in lists:
maximum = max(maximum, len(l))
将会
max(map(len, lists))
或者可能正在使用len(max(lists, key=len))