Python中使用max方法获取最长单词返回错误结果的问题咨询
为什么
max(['hello', 'there', 'people'])返回'there'而不是'people'? 这是因为Python的max()函数默认是按照字符串的字典序(lexicographical order)进行比较,而不是按照字符串的长度来判断“最大”哦!
具体原因拆解:
字典序的比较逻辑是逐个字符按ASCII码值对比:
- 先看每个单词的首字符:'hello'的首字母是'h','there'是't','people'是'p'
- 在ASCII码表中,'t'的码值(116)比'p'(112)和'h'(104)都大,所以
max()会直接把'there'判定为“最大”元素,完全不会去比较后续字符或者字符串长度。
如何正确找到最长的单词?
如果想按字符串长度筛选最长元素,需要给max()传入key参数,指定用len()函数作为比较依据:
words = ['hello', 'there', 'people'] longest_word = max(words, key=len) print(longest_word) # 输出 'people'
这里的key=len相当于告诉max():别直接比字符串本身,先把每个字符串丢进len()里算出长度,再对比这些长度值,最终返回对应长度最大的那个字符串。
额外小补充:
如果存在多个长度相同的最长单词,max()会返回列表中第一个出现的那个。比如:
words = ['apple', 'banana', 'cherry'] max(words, key=len) # 返回 'banana',它和'cherry'长度相同,但出现顺序更早
内容的提问来源于stack exchange,提问作者emexxy
相关产品推荐
相关产品推荐

