python 字符串中的比较运算符
python compare operator in string
when python 比较字符串中的运算符。
它是如何工作的?
“1.0.3”>“1.0.0”
return 正确
“1.0.3”>“1.0.6”
return假
听说是ascii码
任何人请详细解释这个问题。
谢谢你
以这种方式比较字符串时,您是在比较一个字符串是在另一个字符串之前还是之后,如果它们按字母顺序排序的话。
"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
这是因为 'word' 的第一个 'letter' 是 1
- 低于另一个 'word' 的第一个 'letter' - 2
.
那里有一些图书馆,例如 natsort 试图解决这个问题 - 所以当您使用上面的数字时,您可能需要研究一下,这些数字是多点的(使它们无效十进制数)。
Python 使用字典顺序,这意味着比较每个字符串的第一个字符,如果它们不同则得出结论。如果它们是相同的值,那么它将比较第二个字符,依此类推,直到字符串结束。
在Python 3. Unicode代码点数用于比较字符。在 Python2 中,它使用字符的 ASCII 值。
您可以通过使用 ord
and chr
方法将整数转换为字符,反之亦然的示例来了解它是如何工作的。
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] == "1" == 49
a[0] is equal to b[0]
a[1] == "." == 46
b[1] == "." == 46
a[1] is equal to b[1]
a[2] == "0" == 48
b[2] == "0" == 48
a[2] is equal to b[2]
a[3] == "." == 46
b[3] == "." == 46
a[3] is equal to b[3]
a[4] == "3" == 51
b[4] == "6" == 54
a[4] is less than b[4]
因此a < b == True
when python 比较字符串中的运算符。 它是如何工作的?
“1.0.3”>“1.0.0” return 正确
“1.0.3”>“1.0.6” return假
听说是ascii码
任何人请详细解释这个问题。
谢谢你
以这种方式比较字符串时,您是在比较一个字符串是在另一个字符串之前还是之后,如果它们按字母顺序排序的话。
"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
这是因为 'word' 的第一个 'letter' 是 1
- 低于另一个 'word' 的第一个 'letter' - 2
.
那里有一些图书馆,例如 natsort 试图解决这个问题 - 所以当您使用上面的数字时,您可能需要研究一下,这些数字是多点的(使它们无效十进制数)。
Python 使用字典顺序,这意味着比较每个字符串的第一个字符,如果它们不同则得出结论。如果它们是相同的值,那么它将比较第二个字符,依此类推,直到字符串结束。
在Python 3. Unicode代码点数用于比较字符。在 Python2 中,它使用字符的 ASCII 值。
您可以通过使用 ord
and chr
方法将整数转换为字符,反之亦然的示例来了解它是如何工作的。
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] == "1" == 49
a[0] is equal to b[0]
a[1] == "." == 46
b[1] == "." == 46
a[1] is equal to b[1]
a[2] == "0" == 48
b[2] == "0" == 48
a[2] is equal to b[2]
a[3] == "." == 46
b[3] == "." == 46
a[3] is equal to b[3]
a[4] == "3" == 51
b[4] == "6" == 54
a[4] is less than b[4]
因此a < b == True