我想提高我对内置key
函数的max
论证的理解。请考虑以下示例:
我有一个列表列表,我想找到一个最长的列表。我可以写出直截了当的解决方案:
maximum = 0
for l in lists:
maximum = max(maximum, len(l))
但是我宁愿使用key
的max
参数来避免显式的for循环。据我了解,密钥将其参数应用于输入中的每个元素,然后比较这些输出。所以这应该工作:
maximum = max(lists, key=len)
我相信它应该有效,因为根据我的(显然是错误的)理解,上面的陈述相当于将长度应用于每个元素,然后调用max
:
max([len(l) for l in text_tokenized])
我错过了什么?
我相信它应该有效,因为根据我的(显然是错误的)理解,上面的陈述相当于将长度应用于每个元素,然后调用
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))