Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python使用的字符串比较技术_Python_String_Comparison - Fatal编程技术网

Python使用的字符串比较技术

Python使用的字符串比较技术,python,string,comparison,Python,String,Comparison,我想知道Python是如何进行字符串比较的,更具体地说,当使用小于()运算符时,它是如何确定结果的 例如,如果我把print('abc'

我想知道Python是如何进行字符串比较的,更具体地说,当使用小于(
)运算符时,它是如何确定结果的

例如,如果我把
print('abc'<'bac')
放进去,我得到
True
。我知道它比较了字符串中的对应字符,但由于缺乏更好的术语,“权重”更多地放在第一个字符串中a小于b(第一位置)的事实上,而不是放在第二个字符串(第二位置)中a小于b的事实上,这一点尚不清楚

比较使用词典编纂法 订购:前两项 进行比较,如果它们之间存在差异 确定测试的结果 比较;如果它们相等,则 接下来的两个项目进行比较,依此类推 启用,直到其中一个序列 筋疲力尽

此外:

字符串的字典排序使用Unicode代码点编号对单个字符进行排序

或在:

字符串的字典顺序使用单个字符的ASCII顺序

例如:

>>> 'abc' > 'bac'
False
>>> ord('a'), ord('b')
(97, 98)
一旦发现
a
小于
b
,就会返回结果
False
。不会比较其他项目(如您可以看到的第二个项目:
b
a
True

注意大写和小写字母:

>>> [(x, ord(x)) for x in abc]
[('a', 97), ('b', 98), ('c', 99), ('d', 100), ('e', 101), ('f', 102), ('g', 103), ('h', 104), ('i', 105), ('j', 106), ('k', 107), ('l', 108), ('m', 109), ('n', 110), ('o', 111), ('p', 112), ('q', 113), ('r', 114), ('s', 115), ('t', 116), ('u', 117), ('v', 118), ('w', 119), ('x', 120), ('y', 121), ('z', 122)]
>>> [(x, ord(x)) for x in abc.upper()]
[('A', 65), ('B', 66), ('C', 67), ('D', 68), ('E', 69), ('F', 70), ('G', 71), ('H', 72), ('I', 73), ('J', 74), ('K', 75), ('L', 76), ('M', 77), ('N', 78), ('O', 79), ('P', 80), ('Q', 81), ('R', 82), ('S', 83), ('T', 84), ('U', 85), ('V', 86), ('W', 87), ('X', 88), ('Y', 89), ('Z', 90)]
从:

比较使用词典编纂法 订购:前两项 进行比较,如果它们之间存在差异 确定测试的结果 比较;如果它们相等,则 接下来的两个项目进行比较,依此类推 启用,直到其中一个序列 筋疲力尽

此外:

字符串的字典排序使用Unicode代码点编号对单个字符进行排序

或在:

字符串的字典顺序使用单个字符的ASCII顺序

例如:

>>> 'abc' > 'bac'
False
>>> ord('a'), ord('b')
(97, 98)
一旦发现
a
小于
b
,就会返回结果
False
。不会比较其他项目(如您可以看到的第二个项目:
b
a
True

注意大写和小写字母:

>>> [(x, ord(x)) for x in abc]
[('a', 97), ('b', 98), ('c', 99), ('d', 100), ('e', 101), ('f', 102), ('g', 103), ('h', 104), ('i', 105), ('j', 106), ('k', 107), ('l', 108), ('m', 109), ('n', 110), ('o', 111), ('p', 112), ('q', 113), ('r', 114), ('s', 115), ('t', 116), ('u', 117), ('v', 118), ('w', 119), ('x', 120), ('y', 121), ('z', 122)]
>>> [(x, ord(x)) for x in abc.upper()]
[('A', 65), ('B', 66), ('C', 67), ('D', 68), ('E', 69), ('F', 70), ('G', 71), ('H', 72), ('I', 73), ('J', 74), ('K', 75), ('L', 76), ('M', 77), ('N', 78), ('O', 79), ('P', 80), ('Q', 81), ('R', 82), ('S', 83), ('T', 84), ('U', 85), ('V', 86), ('W', 87), ('X', 88), ('Y', 89), ('Z', 90)]

Python字符串比较是字典式的:

从Python文档:

字符串使用其字符的数字等价物(内置函数ord()的结果)按字典顺序进行比较。Unicode和8位字符串在此行为中完全可互操作


因此在您的示例中,
'abc'
,'a'在数字上(在ASCII和Unicode表示中)在'b'之前(小于),因此比较就到此结束。

Python字符串比较是字典式的:

从Python文档:

字符串使用其字符的数字等价物(内置函数ord()的结果)按字典顺序进行比较。Unicode和8位字符串在此行为中完全可互操作


因此,在您的示例中,
'abc'
,'a'在数字上(在ASCII和Unicode表示中)在'b'之前(小于),因此比较就到此结束。

这是一个。它只是把事情按字典顺序排列

这是一个问题。它只是把事情按字典顺序排列

使用其字符的数字等价物(内置函数ord()的结果)进行比较。Unicode和8位字符串在此行为中完全可互操作。

使用其字符的数字等价物(内置函数ord()的结果)进行比较。Unicode和8位字符串在此行为中完全可互操作。

Python和几乎所有其他计算机语言使用的原则与(我希望)在印刷词典中查找单词时使用的原则相同:

(1) 根据所涉及的人类语言,你有一个字符排序的概念:“a”<“b”<“c”等等

(2) 第一个字符比第二个字符更重:“az”<“za”(语言是从左到右还是从右到左,或是boustrophedon都不相关)

(3) 如果要测试的字符不足,则较短的字符串小于较长的字符串:“foo”<“food”


通常,在计算机语言中,“字符排序的概念”相当原始:每个字符都有一个与人类语言无关的数字
ord(character)
,并且使用该数字对字符进行比较和排序。通常,这种排序不适合用户的人类语言,然后您需要进入“排序”这一有趣的主题。

Python和几乎所有其他计算机语言使用的原则与(我希望)在印刷词典中查找单词时使用的原则相同:

(1) 根据所涉及的人类语言,你有一个字符排序的概念:“a”<“b”<“c”等等

(2) 第一个字符比第二个字符更重:“az”<“za”(语言是从左到右还是从右到左,或是boustrophedon都不相关)

(3) 如果要测试的字符不足,则较短的字符串小于较长的字符串:“foo”<“food”

通常,在计算机语言中,“字符排序的概念”相当原始:每个字符都有一个与人类语言无关的数字
ord(character)
,并且使用该数字对字符进行比较和排序。通常,排序不适合用户的人类语言,然后您需要进入“排序”,这是一个有趣的话题。

还可以看看讨论Unicode排序算法()给出的排序规则的地方

答复评论

什么?除了从左到右,还可以如何定义排序

在对法语进行排序时,有一个著名的反例。它涉及口音:事实上,人们可以说,在法语中,字母从左到右排序,口音从右到左排序。这是柜台