Python中字符串列表执行max()函数的返回结果为什么不是最长字符串?
问题原因解答
- Python内置
max()函数对字符串的默认比较规则是按Unicode码点逐位比对,不会默认参考字符串长度。 - 比对
Manchester和united时,首先取两个字符串的首字符比较:'M'的Unicode码值为77,'u'的Unicode码值为117,117大于77,因此max()直接判定'united'为更大的元素,不会继续比对后续字符,也不会计算字符串长度。 - 如果需要按照字符串长度取最大值,需要给
max()指定key参数为len,修改代码为:
max(l, key=len)
执行后就会返回你预期的长度最长的'Manchester'。
你可以通过
ord('M')、ord('u')两个代码手动输出字符的Unicode值,验证上述比对逻辑。
内容的提问来源于stack exchange,提问作者Mary
相关产品推荐
相关产品推荐

