关于python:比较运算符如何与[i:]<b[i:]一起使用?

How can a comparison operator be used with a[i:] < b[i:]?

本问题已经有最佳答案,请猛点这里访问。

在阅读一些Python代码时,我发现了这种语法if a[i:] < b[j:],冒号让我做了一个循环。我发现了这个伟大的问题/答案:

python列表索引中的冒号(:)

但是我回顾了我的代码示例,仍然不清楚它是如何使用我所理解的作为比较中拼接的快捷方式的。

我正试图将其反向工程为一个JavaScript等效函数。这种奇怪的比较是我唯一无法理解的。python究竟在比较什么?字符串长度?或者别的什么?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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')

产量

1
2
3
4
5
6
7
8
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


按词典编纂顺序比较

如果您试图在EDOCX1(t)中找到至少与EDOCX1(t)一样大的字符,并在EDOCX1(a,c,o)中插入与b中的字符较小的所有连续字母,则此代码是有意义的。

~是最大的可打印ASCII字符(126),因此用作比较。

1
2
0 TACO~ AT~ False # because 'T' < 'A'
0 TACO~ T~ True   # because '~' > 'A'