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

2024-05-23 16:00:43 发布

您现在位置:Python中文网/ 问答频道 /正文

在阅读一些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

Tags: 答案代码answerinfalsetrueif语法
1条回答
网友
1楼 · 发布于 2024-05-23 16:00:43

它是用Lexicographical Order来比较的

如果您试图在b(T)中找到至少与a(T)一样大的字符,并在a(A,C,O)中插入比b中的字符小的所有连续字母,那么此代码是有意义的。你知道吗

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

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

相关问题 更多 >