【发布时间】:2019-04-21 15:50:02
【问题描述】:
阅读一些 Python 代码,我发现了这个语法 if a[i:] < b[j:],冒号让我陷入了循环。我发现了这个很好的问题/答案:
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
【问题讨论】:
-
你到底想问什么?
-
@ddor254 我在问如何使用切片表示法来比较字符串? python会自动比较长度吗?还是在比较别的东西?
-
别让最后一个冒号迷惑了你,它属于
if语句。a[i:]和b[j:]只是a从第 i 个索引到末尾的标准表示法。 -
所以你的问题不是字符串切片,而是字符串比较。这是一个“简单”的字典比较...
T==T,但a~... -
它是lexicographically comparing 子字符串。
TACO~在字典中会出现在CAT~之后,但在T~之前。