how does string comparison work on python?
Possible Duplicate:
String Comparison Technique Used by Python
号
1 2 3 4 5 6 7 8 | >>>"spam" <"bacon" False >>>"spam" <"SPAM" False >>>"spam" <"spamalot" True >>>"Spam" <"eggs" True |
qeustion:如何比较等长字符串。如果字符串的长度不相同,为什么"垃圾邮件"小于"鸡蛋"?
词汇。
比较第一个字节,如果第一个字节的序数小于第二个字节的序数,则其值较小。如果更多,就更大。如果它们相同,则尝试下一个字节。如果所有的领带都是长的,那么越短的就越少。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | >>>"a" <"zzz" True >>>"aaa" <"z" True >>>"b" <"a" False >>>"abc" <"abcd" True >>>"abcd" <"abce" True >>>"A" <"a" True >>> ord("A") 65 >>> ord("a") 97 |
号
python中的字符串按字典顺序排列,以便在逻辑上进行排序:
1 2 | >>> print sorted(['spam','bacon','SPAM','spamalot','Spam','eggs']) ['SPAM', 'Spam', 'bacon', 'eggs', 'spam', 'spamalot'] |
这方面存在一些妥协,主要是Unicode。字母
1 2 3 4 | >>> 'e' < 'z' True >>> 'é' < 'z' False |
。
幸运的是,您可以使用sort函数,使用
由于
1 2 3 4 5 6 | >>>"A" <"a" True >>>"S" <"e" True >>>"S" <"eggs" True |
注意,在比较中不考虑字符串长度。正如@mikegraham在下面的注释中正确指出的那样,每个字节的顺序值从第一个字节开始进行比较。一旦发现不匹配,比较就会停止,并返回比较值,如上一个示例中所示。
从文档-比较序列和其他类型:
The comparison uses lexicographical ordering: first the first two
items are compared, and if they differ this determines the outcome of
the comparison; if they are equal, the next two items are compared,
and so on, until either sequence is exhausted.
号
同样,在同一段中:
Lexicographical ordering for strings uses the ASCII ordering for
individual characters
号
这是一个词典编纂的比较。