反向字符串Python切片表示法

时间:2016-10-26 03:32:47

标签: python python-2.7 slice

string = "HELLO"
print string[::-1] #as expected
print string[0:6:-1] #empty string why ?

我惊讶地发现在python中反转一个字符串是多么容易,但后来我突然发现并迷路了。有人可以解释为什么第二次逆转不起作用吗?

2 个答案:

答案 0 :(得分:1)

第二个字符串为空的原因是因为您告诉编译器从0开始,每次结束时为6,每次步骤为-1个字符。

由于编译器通过重复地将-1加到0(它变为0,-1,-2,-3,...)而永远不会得到大于6的数字,因此编译器被编程为返回空字符串。

尝试string[6::-1],这样可行,因为重复添加-1到6将变为-1(超过字符串结尾)。

注意:这个答案主要是@dmcdougall,@ Ben_Love和@Sundeep的评论汇编,附有更多解释

答案 1 :(得分:1)

切片表示法编写如下:

list_name[start_index: end_index: step_value]

python中的列表索引与数字行中的数字不同。当-1st0thstep_value索引后,列表索引不会转到-1

因此产生以下结果

>>>> print string[0:6:-1]

>>>>

并且

>>>> print string[0::-1]

>>>> H

所以当start_index为0时,它不能以循环次序遍历索引到-1,-2,-3,-4,-5,-6 step_value-1

类似地

>>>> print string[-1:-6:-1]

>>>> OLLEH

>>>> print string[-1::-1]

>>>> OLLEH

因此,当start_index为-1时,它以循环次序遍历索引到-1,-2,-3,-4,-5,-6,得到输出OLLEH

start_index为6且step_value为-1

时非常直接了解

>>>> print string[6::-1]

>>>> OLLEH