反向切片的字符串[x:y:-1]打印为空白

1 python string slice

我有代表DNA序列及其补体的字符串,我正在搜索它们的反向回文.

切片

seq1[i:z]
Run Code Online (Sandbox Code Playgroud)

效果很好,但是

seq2[i:z:-1]
Run Code Online (Sandbox Code Playgroud)

什么都不打印,什么都不返

此外,seq[i:z][::-1]在所有情况下都可以正常工作,但这对于字符串切片是否正常?

Ale*_*ley 6

如果您在可迭代中退步(即为step负),则需要交换startend值的顺序,以便start > end:

>>> seq = 'abcde'
>>> seq[1:4:-1]
''
>>> seq[4:1:-1]
'edc'
Run Code Online (Sandbox Code Playgroud)

否则,您将返回一个空字符串(或空列表或空元组).

但请注意,seq[4:1:-1] 不会产生相同的结果seq[1:4][::-1].前者从索引开始4,向后移动并在索引之前停止1,而后者从索引开始1,向前移动,在索引之前停止4,然后反转切片.

相反,我们有一个可迭代seq和整数i < j:

seq[i:j][::-1] == seq[j-1:i-1:-1]
Run Code Online (Sandbox Code Playgroud)