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

时间:2014-12-28 21:38:30

标签: python string slice

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

切片

seq1[i:z]

效果很好,但

seq2[i:z:-1]

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

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

2 个答案:

答案 0 :(得分:6)

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

>>> seq = 'abcde'
>>> seq[1:4:-1]
''
>>> seq[4:1:-1]
'edc'

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

请注意,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]

答案 1 :(得分:0)

对于palindroms,

a=input("entry something: ")
if a==a[::-1]:
    print ("It is a palindrom.")

因此,如果 a的反向等于 a ,它将打印出一个回文。