列表列表中的最大长度列表,使用max和key

时间:2018-09-10 12:16:28

标签: python max

我想提高对内置key函数的max自变量的理解。请考虑以下示例:

我有一个列表列表,我想找到长度最大的列表。 我可以写一个简单的解决方案:

maximum = 0
for l in lists:
   maximum = max(maximum, len(l))

但是,我更希望避免使用key的{​​{1}}参数进行显式的for循环。据我了解,该键会将其参数应用于输入中的每个元素,然后比较这些输出。所以这应该工作:

max

我认为它应该起作用,因为根据我的理解(显然是错误的),上述声明等同于将长度应用于每个元素,然后调用maximum = max(lists, key=len)

max

我想念什么?

1 个答案:

答案 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))