字符串中的python比较运算符

时间:2017-11-03 02:30:15

标签: python compare operators version

当python比较运算符时的字符串。 它是如何工作的?

“1.0.3”> “1.0.0” 返回true

“1.0.3”> “1.0.6” 返回错误

我听说它正在使用ascii代码。

任何人请详细解释这个问题。

谢谢你。

2 个答案:

答案 0 :(得分:1)

以这种方式比较字符串时,如果字符串按字母顺序排序,则会比较字符串是在其他字符串之前还是之后。

"a" < "b"  # True - a is earlier in the alphabet than b
"b" < "a"  # False

同样的事情发生在你的小数上 - 但它可能导致不良结果;

11 < 2  # True - 11 is larger than 2.
"11" < "2"  # False

这是因为“单词”的第一个“字母”是1 - 低于另一个“单词”的第一个“字母” - 2

有一些库,例如natsort,试图解决这个问题 - 所以你可能需要研究一下,当你使用上面那些多点的数字时(使它们成为无效的十进制数) )。

答案 1 :(得分:1)

Python使用词典排序,这意味着每个字符串的第一个字符进行比较,如果它们不同,则得出结果。如果它们是相同的值,那么它将比较第二个字符,依此类推,直到字符串结束。

在Python 3中,Unicode代码点编号用于比较字符。在Python2中,它使用字符的ASCII值。

使用ordchr方法将整数转换为字符,反之亦然,您可以看到这是如何工作的。

a = "1.0.3"
b = "1.0.6"

for i, v in enumerate(a):
    print('a[{}] == "{}" == {}'.format(i, v, ord(v)))
    print('b[{}] == "{}" == {}'.format(i, b[i], ord(b[i])))
    if v == b[i]:
        print('a[{}] is equal to b[{}]'.format(i, i))
    if v > b[i]:
        print('a[{}] is greater than b[{}]'.format(i, i))
    if v < b[i]:
        print('a[{}] is less than b[{}]'.format(i, i))
  

a [0] ==&#34; 1&#34; == 49
  b [0] ==&#34; 1&#34; == 49
  a [0]等于b [0]
  a [1] ==&#34;。&#34; == 46
  b [1] ==&#34;。&#34; == 46
  a [1]等于b [1]
  a [2] ==&#34; 0&#34; == 48
  b [2] ==&#34; 0&#34; == 48
  a [2]等于b [2]
  a [3] ==&#34;。&#34; == 46
  b [3] ==&#34;。&#34; == 46
  a [3]等于b [3]
  a [4] ==&#34; 3&#34; == 51
  b [4] ==&#34; 6&#34; == 54
  a [4]小于b [4]

因此a < b == True