>>> "spam" < "bacon"
False
>>> "spam" < "SPAM"
False
>>> "spam" < "spamalot"
True
>>> "Spam" < "eggs"
True
qeustion:比较等长字符串的方式。如果字符串长度不一样,为什么“垃圾邮件”比“鸡蛋”少呢?
答案 0 :(得分:3)
Lexigraphically。
比较第一个字节,如果第一个字节的序数值小于第二个字节,那么它就会更小。如果它更多,那就更好了。如果它们相同,则尝试下一个字节。如果它是全部关系而一个更长,则较短的一个是较小的。
>>> "a" < "zzz"
True
>>> "aaa" < "z"
True
>>> "b" < "a"
False
>>> "abc" < "abcd"
True
>>> "abcd" < "abce"
True
>>> "A" < "a"
True
>>> ord("A")
65
>>> ord("a")
97
答案 1 :(得分:2)
由于A
位于ASCII表格中的a
之前,因此S
中的Spam
被视为小于e
中的eggs
。
>>> "A" < "a"
True
>>> "S" < "e"
True
>>> "S" < "eggs"
True
注意,字符串长度在比较中未考虑。从第一个字节开始比较每个字节的序数值,正如@MikeGraham在下面的评论中正确指出的那样。 一旦找到不匹配,比较就会停止,并返回比较值,如上例所示。
来自docs - Comparing Sequences and Other Types: -
比较使用词典排序:首先是前两个 比较项目,如果它们不同,则决定了结果 比较;如果它们相等,则比较接下来的两个项目, 等等,直到两个序列都用完为止。
同一段中还有: -
字符串的字典排序使用ASCII排序 个人角色
答案 2 :(得分:2)
Python中的字符串是lexicographically ordered,因此可以对它们进行逻辑排序:
>>> print sorted(['spam','bacon','SPAM','spamalot','Spam','eggs'])
['SPAM', 'Spam', 'bacon', 'eggs', 'spam', 'spamalot']
这有妥协,主要是使用unicode。字母é
将在字母z
for example之后排序:
>>> 'e' < 'z'
True
>>> 'é' < 'z'
False
幸运的是,您可以使用排序函数,使用locale
或字符串的子类,无论如何都要对字符串进行排序。
答案 3 :(得分:1)
这是一种词典比较。