比较运算符如何与 a[i:] < b[i:] 一起使用?
How can a comparison operator be used with a[i:] < b[i:]?
阅读一些 Python 代码,我发现了这种语法 if a[i:] < b[j:]
并且冒号让我陷入了循环。我发现这很棒 question/answer:
Colon (:) in Python list index
但后来我回顾了我的代码示例,在比较中仍然不清楚它是如何使用我理解的拼接快捷方式的。
我正在尝试将其逆向工程为 JavaScript 等效函数。那种奇怪的比较是我唯一无法理解的。 python 到底在比较什么?字符串长度?还是别的?
def combineStrings(a, b):
answer = ''
a += '~'
b += '~'
i = 0
j = 0
while a[i] != '~' or b[j] != '~':
print (i, a[i:], b[j:], a[i:] < b[j:])
if a[i] != '~' and a[i:] < b[j:]:
answer += a[i]
i += 1
else:
answer += b[j]
j += 1
print (answer)
combineStrings('TACO', 'CAT')
输出
0 TACO~ CAT~ False
0 TACO~ AT~ False
0 TACO~ T~ True
1 ACO~ T~ True
2 CO~ T~ True
3 O~ T~ True
4 ~ T~ False
CATACOT
如果您试图在 b
(T) 中找到至少与 a
(T) 一样大的字符,并插入 a
中的所有连续字母(A, C, O) 小于 b
中的字符,此代码有意义。
~
是最大的可打印 ASCII 字符 (126),因此用作比较。
0 TACO~ AT~ False # because 'T' < 'A'
0 TACO~ T~ True # because '~' > 'A'
阅读一些 Python 代码,我发现了这种语法 if a[i:] < b[j:]
并且冒号让我陷入了循环。我发现这很棒 question/answer:
Colon (:) in Python list index
但后来我回顾了我的代码示例,在比较中仍然不清楚它是如何使用我理解的拼接快捷方式的。
我正在尝试将其逆向工程为 JavaScript 等效函数。那种奇怪的比较是我唯一无法理解的。 python 到底在比较什么?字符串长度?还是别的?
def combineStrings(a, b):
answer = ''
a += '~'
b += '~'
i = 0
j = 0
while a[i] != '~' or b[j] != '~':
print (i, a[i:], b[j:], a[i:] < b[j:])
if a[i] != '~' and a[i:] < b[j:]:
answer += a[i]
i += 1
else:
answer += b[j]
j += 1
print (answer)
combineStrings('TACO', 'CAT')
输出
0 TACO~ CAT~ False
0 TACO~ AT~ False
0 TACO~ T~ True
1 ACO~ T~ True
2 CO~ T~ True
3 O~ T~ True
4 ~ T~ False
CATACOT
如果您试图在 b
(T) 中找到至少与 a
(T) 一样大的字符,并插入 a
中的所有连续字母(A, C, O) 小于 b
中的字符,此代码有意义。
~
是最大的可打印 ASCII 字符 (126),因此用作比较。
0 TACO~ AT~ False # because 'T' < 'A'
0 TACO~ T~ True # because '~' > 'A'