Python使用的字符串比较技术

发布于 2021-02-02 23:22:26

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

例如,如果我放进print('abc' < 'bac')True。我知道它会比较字符串中的相应字符,但是由于缺乏更好的术语,不清楚为什么还有更多,“权重”是基于以下事实:在第一个字符串中a小于b(第一个位置)而不是在第二个字符串(第二个位置)中a小于b的事实。

关注者
0
被浏览
116
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    比较使用字典顺序:首先比较前两个项目,如果它们不同,则确定比较的结果;如果它们相等,则比较下两个项目,依此类推,直到用尽任何一个序列。

    也:

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

    或在Python 2上:

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

    举个例子:

    >>> 'abc' > 'bac'
    False
    >>> ord('a'), ord('b')
    (97, 98)
    

    False一旦a发现小于,则返回结果b。不比较其他项目(如你在第二个项目中所见:b> ais 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)]
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看