引言
Python 中的字符串其实也是可以比较大小的,如下:
>>> 'a' < 'b'
True
>>> 'aa' < 'ab'
True
>>> 'abc' < 'acb'
True
本文简单介绍一下 Python 中字符串比较大小的原理。
原理
查阅 Python 官网文档可知,字符串是通过计算每个字符的 Unicode 编码来比较大小的。其中,计算 Unicode 编码使用 Python 内置的 ord() 函数。
Strings (instances of str) compare lexicographically using the numerical Unicode code points (the result of the built-in function ord()) of their characters.
又因为字符串是可迭代对象,所以先比较两个字符串的第 0 个字符的 Unicode 编码,大小关系即为两个字符串的大小关系,如果相等则继续比较后续字符,先终止迭代的被认为是小的。
示例
'a' 的 Unicode 编码是 97,'b' 的 Unicode 编码是 98,所以 'a' < 'b'
>>> ord('a')
97
>>> ord('b')
98
>>> 'a' < 'b'
True
'aa' 和 'ab' 的首位相同都是 'a' ,那么比较下一位,同上可得,'aa' < 'ab'
>>> 'aa' < 'ab'
True
'abc' 和 'acb' 的首位相同,比较下一位,'b' 的 Unicode 编码小于 'c' ,则可以确定 'abc' < 'acb' ,不需要再往下比较了。
>>> 'abc' < 'acb'
True
参考
https://docs.python.org/3/reference/expressions.html#comparisons
|