我了解切片语法包含3个参数,即:
开始
停止
step
具有以下默认值:
开始= 0
stop =字符串长度
step = 1
所以,对于
> string = "abc"
> string[::]
将返回
> "abc"
但是,用于
> string[::-1]
不应该返回:
> "a"
因为字符串[start = 0] ='a'然后,string [start + step],即string [0-1] ='c',但由于其不小于stop = 3,它将中断。
或者我是在错误的方向上思考,如果步长为负,python会简单地按通常的方向对字符串进行切片,并返回that字符串的反方向?为了简化,否定步骤在内部如何工作?
当传递负值作为step
时,start
和stop
的默认“值”相反。 start
从“序列的开始”变为“序列的末端”,stop
从“序列的结束”变为“序列的开始”。如果它没有执行此操作,则在执行完整切片时会遇到问题,因为任何切片的结尾都是排他的; mystr[len(mystr)-1:0:-1]
将排除第一个字符(因为将不包括0
),并且您不能通过-1
来代替0
,因为那与len(mystr)-1
的含义相同(由于Python处理负索引的方式),您一无所获。进行默认设置切换,以便省略结尾(或等效地,显式传递None
)一直到开头(包括首尾)是唯一明智的解决方案。
step
决定要为拼接遍历多少个元素。使用此代码,您可以了解其工作方式。使用负步则相反。