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

问题描述 投票:0回答:1

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

我有一个列表列表,我想找到一个最长的列表。我可以写出直截了当的解决方案:

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

但是我宁愿使用keymax参数来避免显式的for循环。据我了解,密钥将其参数应用于输入中的每个元素,然后比较这些输出。所以这应该工作:

maximum = max(lists, key=len)

我相信它应该有效,因为根据我的(显然是错误的)理解,上面的陈述相当于将长度应用于每个元素,然后调用max

max([len(l) for l in text_tokenized])

我错过了什么?

python max
1个回答
2
投票

我相信它应该有效,因为根据我的(显然是错误的)理解,上面的陈述相当于将长度应用于每个元素,然后调用max

不,代码

maximum = max(lists, key=len)

意思是,找到lists的“元素”,它具有最大值len(element)

然而,你打算找到len(element)的价值。一行quvilent你的代码:

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

将会

max(map(len, lists))

或者可能正在使用len(max(lists, key=len))

© www.soinside.com 2019 - 2024. All rights reserved.