为什么max函数在以下两个列表中的运行方式不同:
>>> list1=['the school','boy', 'the wise old man']
>>> max(list1)
'the wise old man'
list2=['made', 'with', 'then', 'happy home', 'came', 'this', 'them', 'from', 'have', 'into']
>>> max(list2)
'with'
显然在list2中,'happy home'
应该是'max'
,因为它比列表中的其他文本有更多的文本。
任何想法为什么? 感谢。
答案 0 :(得分:4)
max()
按字典顺序比较字符串;你找到了最后排序的元素。因此,'the wise old man'
按字母顺序排在the school
之后。
要获取最长的字符串,请将函数传递给key
的{{1}}参数:
max()
一般来说,如果没有max(list2, key=len)
函数,key
会找到输入序列中所有其他值max()
始终为真的值。
value > othervalue
参数(如果提供)为key
提供了一个不同的值来进行比较,以确定序列中的哪个项目是最大的。
答案 1 :(得分:1)
我认为您想要具有最大尺寸的列表项。你应该这样使用
max(list2, key=len)
结果是
'happy home'
键改变了max函数的行为,另一方面它找到了具有最大长度的max项。