You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

单独指定步长step时Python列表切片的工作原理是什么?

Python切片步长工作逻辑讲解

Python序列的切片完整语法为 序列[start:end:step],三个参数均可省略,仅指定步长时会使用start和end的默认值,步长的正负直接决定了切片的遍历方向。

步长的核心规则

  • 当step > 0时,切片从左到右遍历序列
    • start默认值为0(序列第一个元素的索引)
    • end默认值为len(序列)(序列最后一个元素的索引+1)
    • 遍历过程中依次取索引满足 start ≤ 索引 < end、间隔为step的元素,超出范围即停止
  • 当step < 0时,切片从右到左遍历序列
    • start默认值为len(序列)-1(序列最后一个元素的索引)
    • end默认值为-len(序列)-1(序列第一个元素索引的左侧边界,确保能取到第一个元素)
    • 遍历过程中依次取索引满足 start ≥ 索引 > end、间隔为step绝对值的元素,超出范围即停止

示例代码执行拆解

你的测试列表为:

lst = [50,34,98,8,10]

链式切片lst[::][::-1][::-1][::-1][::-1]的每一步执行结果如下:

  1. lst[::]:start、end、step均省略,step默认取1,返回原列表的浅拷贝,结果为 [50,34,98,8,10]
  2. 第一次[::-1]:step为-1,将当前列表倒序,结果为 [10,8,98,34,50]
  3. 第二次[::-1]:再次倒序,结果回到 [50,34,98,8,10]
  4. 第三次[::-1]:倒序,结果为 [10,8,98,34,50]
  5. 第四次[::-1]:再次倒序,结果回到 [50,34,98,8,10]

连续4次倒序属于偶数次倒序,最终结果和原列表完全一致。

常见效果验证

以lst为例,不同步长的切片效果:

  • lst[::2]:步长为2,从左到右取索引0、2、4的元素,结果为 [50, 98, 10]
  • lst[::-2]:步长为-2,从右到左取索引4、2、0的元素,结果为 [10, 98, 50]
  • lst[3::-1]:步长为-1,从索引3开始向左遍历,取索引3、2、1、0的元素,结果为 [8, 98, 34, 50]

内容的提问来源于stack exchange,提问作者meallhour

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 12:57:03