Python 如何将比较运算符与[i:]一起使用<;b[i:]?
在阅读一些Python代码时,我发现如果a[I:][b[j:][/code>和冒号将我抛出一个循环,就会出现这种语法。我发现了一个很好的问题/答案: 但后来我回顾了我的代码示例,仍然不清楚它是如何使用我所理解的拼接快捷方式进行比较的Python 如何将比较运算符与[i:]一起使用<;b[i:]?,python,string-comparison,Python,String Comparison,在阅读一些Python代码时,我发现如果a[I:][b[j:][/code>和冒号将我抛出一个循环,就会出现这种语法。我发现了一个很好的问题/答案: 但后来我回顾了我的代码示例,仍然不清楚它是如何使用我所理解的拼接快捷方式进行比较的 0 TACO~ AT~ False # because 'T' < 'A' 0 TACO~ T~ True # because '~' > 'A' 我正在尝试将其反向工程为JavaScript等效函数。这种奇怪的比较是我唯一不能理解的。pytho
0 TACO~ AT~ False # because 'T' < 'A'
0 TACO~ T~ True # because '~' > 'A'
我正在尝试将其反向工程为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')
这是一种比较
如果您试图在b
(T)中找到与a
(T)一样大的字符,并在a
(a、C、O)中插入b
中小于该字符的所有连续字母,则此代码是有意义的
~
是最大的可打印ASCII字符(126),因此用作比较
0 TACO~ AT~ False # because 'T' < 'A'
0 TACO~ T~ True # because '~' > 'A'
0taco~AT~False#因为'T'<'A'
0塔可~T~对#因为~'>'A'
您真正想问的是什么?@ddor254我想问的是如何使用切片表示法来比较字符串?python会自动比较长度吗?还是在比较其他东西?不要让最后一个冒号迷惑你,它属于if
语句a[i://code>和b[j://code>只是a
从第i个索引开始到结尾的标准符号。因此,您的问题不是字符串切片,而是字符串比较。这是一个“简单”的词典比较T
==T
,但a
是子字符串TACO~
在字典中会出现在CAT~
之后,但在T~
之前。真让人吃惊,谢谢!我从来没有尝试过这样比较字符串,我刚刚了解到JavaScript也支持这样的字符串。实际上,我一直认为字典是默认值…默认值与什么相反?我只使用过Python、VBA和Java,它们都使用字典比较,所以我认为这是正常的。这是正常的,我只是说直到现在我才用过。