为了账号安全,请及时绑定邮箱和手机立即绑定

Python使用的字符串比较技术

Python使用的字符串比较技术

GCT1015 2019-06-17 17:42:06
Python使用的字符串比较技术我想知道Python如何进行字符串比较,更具体地说,它是如何在小于(<)或大于(>)使用运算符。例如,如果我print('abc' < 'bac')我得到True..我理解它比较了字符串中相应的字符,但不清楚为什么没有一个更好的术语“权重”放在第一个字符串中a小于b(第一个位置)而不是a在第二个字符串中小于b(第二个位置)的事实上。
查看完整描述

3 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

博士:

比较使用字典顺序:首先对前两项进行比较,如果它们不同,这将决定比较的结果;如果它们相等,则接下来的两项进行比较,以此类推,直到两个序列都用完为止。

此外:

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

或对Python 2:

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

例如:

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

结果False一旦返回a被发现少于b..没有对进一步的项进行比较(如第二项所示):b > aTrue).

注意小写和大写:


>>> [(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)]



查看完整回答
反对 回复 2019-06-17
?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

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

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

(2)第一个字符的权重大于第二个字符:‘az’<‘za’(该语言是从左到右还是从右到左,还是Boustrophdon相当不相关)

(3)如果要测试的字符已用完,则较短的字符串比较长的字符串要小:“foo”<“Food”

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


查看完整回答
反对 回复 2019-06-17
  • 3 回答
  • 0 关注
  • 589 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信