GeeksForGeeks中Python max()函数示例与实际运行结果不符的疑问
关于Python max()函数字符串比较的疑问与验证
我在学习Python的max()函数key参数时,看到两篇相关文章,其中第一篇里的示例2提到:“默认情况下,max()会返回字典序(lexicographic value)最大的字符串”,并给出如下代码,声称运行结果为"for":
var1 = "geeks" var2 = "for" var3 = "geek" max_val = max(var1, var2, var3) print(max_val) # 文章标注结果:"for"
但我在IDE中运行这段代码,实际结果却是"geeks"。我查阅了Python官方文档也没找到相关矛盾点,之后自行做了几组测试,结果都符合字典序预期:
var1 = "geeks" var2 = "for" var3 = "geek" print(max(var1, var2, var3)) # 输出 "geeks" lst1 = ["geeks", "for", "geek"] print(max(lst1)) # 输出 "geeks" print(max('aa','az')) # 输出 'az',符合字典序(字母序)规则
结论
Python中字符串的字典序比较基于字符的Unicode码点,'g'的码点(103)大于'f'的码点(102),所以"geeks"的字典序必然大于"for"。不存在我遗漏的特殊规则,完全是该文章的示例结果描述错误。
内容的提问来源于stack exchange,提问作者Drew Leo
相关产品推荐
相关产品推荐

