Python 切片操作中 step 为负值如何理解?

您所在的位置:网站首页 切片start为负数 Python 切片操作中 step 为负值如何理解?

Python 切片操作中 step 为负值如何理解?

2024-06-28 11:15| 来源: 网络整理| 查看: 265

Cao Yi Python 切片操作中 step 为负值如何理解?

Index

切片操作是Python中对序列对象(如字符串、列表等)进行切片的一种操作方式。它的基本语法是 [start:stop:step],其中 start 表示起始位置(默认为0),stop 表示结束位置(默认为序列的长度),step 表示步长(默认为1)。

在 Python 中,切片操作的 step 参数可以为负值,表示从右往左取值,即反向切片。

当 step 参数为正数时,切片从左往右取值,每次取值的步长为 step;当 step 参数为负数时,切片从右往左取值,每次取值的步长为 step 的绝对值。

需要注意的是,当 step 参数为负数时,切片的起始索引位置应该在终止索引位置的右侧。否则,切片将返回空序列。例如,”123456789”[3:1:-1] 表示从 “123456789”[3] 开始向左取值,直到 “123456789”[1] 为止(不包括 “123456789”[1]),每次取值的步长为 1。这里的起始索引位置 3 大于终止索引位置 1,但由于 step 参数为负数,所以切片仍然有效。最终返回的序列为 “123456789”[3] 和 “123456789”[2],即 43。

>>> "123456789"[3:1:-1] '43'

对于一个字符串 s,使用 “123456789”[::-1] 可以将字符串反转,这里的 step 参数为 -1,表示从右往左取值,每次取值的步长为 1。这里的 start 和 stop 默认值和 step 为正数时相反,都不写,表示默认取整个字符串的范围。要覆盖整个字串时 stop 必须为空,因为在从左往右操作时,没有合适的值能表示第一个元素左边的索引。

>>> "123456789"[9:0:-1] '98765432' >>> "123456789"[9::-1] '987654321' >>> "123456789"[::-1] '987654321'

整个切片操作的从字符串的最后一个字符开始,以步长 -1 取字符,一直取到字符串的第一个字符为止,从而实现了字符串的反转。

其他步长的例子略举如下:

>>> "123456789"[::-2] '97531' >>> "123456789"[::-3] '963' >>> "123456789"[::-4] '951' >>> "123456789"[::-5] '94' >>> "123456789"[::-6] '93' >>> "123456789"[::-7] '92' >>> "123456789"[::-8] '91' >>> "123456789"[::-9] '9' >>> "123456789"[::-10] '9' >>> "123456789"[::-11] '9' This site is open source. Improve this page.


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3