在python中使用字符串扩展切片

3 python slice

>>>"helloworld"[::1]
'helloworld'

>>>"helloworld"[::-1]
'dlrowolleh'
Run Code Online (Sandbox Code Playgroud)

根据语法str[start:end:step].在两种情况下,默认为0.在第一种情况下,字符串从索引值0打印,但在第二种情况下,字符串从索引值-1打印.

我的问题是为什么在后一种情况下从-1打印字符串以及为什么会这样?

Bre*_*arn 6

根据文件(重点补充):

具有步骤k的从i到j的s的片被定义为具有索引x = i + n*k的项的序列,使得0 <= n <(ji)/ k.换句话说,索引是i,i + k,i + 2*k,i + 3*k等等,当到达j时停止(但是从不包括j).如果i或j大于len(s),则使用len(s).如果i或j被省略或无,则它们变为"结束"值(其结束取决于k的符号).注意,k不能为零.如果k为None,则将其视为1.

这意味着如果切片步幅为正,则无限切片开始是序列的开始,省略的切片结束是序列的结束.如果切片步幅为负,则相反.如果您填写以下两个值中的一个,则可以看到此信息:

>>> '0123456'[:3]
'012'
>>> '0123456'[:3:-1]
'654'
>>> '0123456'[3:]
'3456'
>>> '0123456'[3::-1]
'3210'
Run Code Online (Sandbox Code Playgroud)

想到这一点的一种方法是将序列可视化为循环,其中开始和结束是相同的点.省略切片的一端时,您只是指定使用此"两端点"作为端点,但不指定从那里开始的方向.这是一个步幅标志,告诉你走哪条路,这决定了你是否将"两端点"视为序列的开始或结束.