字符串中的python比较运算符



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

"1.0.3">"1.0.0"返回真实

"1.0.3">"1.0.6"返回错误

我听说它使用的是ascii代码。

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

感谢美国

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

在Python3中,Unicode代码点号用于比较字符。在Python 2中,它使用字符的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]="1"==49
b[0]="0"===49
a[0]等于b[0]
a[1]="."==46
b[1]=".."=46
a[1]等于b[1]
a[2]="0"==48
b[2]="0."=48=46
b[3]="."==46
a[3]等于b[3]
a[4]="3"==51
b[4]="6"==54
a[4]小于b[4]

因此a < b == True

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

"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,试图解决这个问题,所以当你使用上面的多点数字(使它们成为无效的十进制数字)时,你可能需要研究一下。

相关内容

  • 没有找到相关文章