我看过this。我还阅读了关于max()方法的documentation,但我不明白这两者之间有什么区别
len(max(name_of_the_list))
len(max(name_of_the_list, key=len))
如果我们想获得列表中最长的项目。
答案 0 :(得分:4)
第一个将比较字符串,并按字母顺序找到最大的字符串,输出其长度(max
的默认行为)。
第二个将使用字符串的长度作为max
函数的键,并找到具有最大长度的字符串,并输出其长度。这里,len
指的是python内置len
函数。
所以这两者都不一样。由于您希望获得列表中最长的项目,因此请使用第二项,因为它是正确的。
作为演示,请考虑以下内容
>>> name_of_the_list = ["abcdefgh", "ijkl"]
>>> max(name_of_the_list)
"ijkl"
>>> len(max(name_of_the_list))
4
>>> max(name_of_the_list, key=len)
"abcdefgh"
>>> len(max(name_of_the_list, key=len))
8
答案 1 :(得分:2)
函数max
将使用类型定义的函数cmp
来检查哪一个是最大的。使用参数key
,您可以覆盖此行为,指定需要应用的函数以计算项目的得分,其中max
将返回最大。
max(name_of_the_list, key=len)
这将返回列表中最长的项目(len
返回最大数字的项目。)
如果name_of_the_list
包含字符串,则省略key
会导致使用为字符串定义的字符串定义的默认cmp
函数。
max
函数将返回具有最大键函数的元素,因此如果将调用包装在另一个len(...)
中,则获得该元素的长度。为了获得这一点,这意味着您不再需要有关元素的信息,只需要最多的键,因此您可以这样做:
max(len(x) for x in name_of_the_list)
也是使用map
的等价物:
max(map(len, name_of_the_list))
这样,你将告诉python计算元素的长度,然后返回这些长度的最大值。