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

Python列表步长为-2的切片结果不符合预期,原因何在?

Python切片结果不符合预期的原因分析

首先明确原数组的索引对应关系:给定数组[43, 90, 115, 500],正、负索引对应如下:

  • 正索引:0→43,1→90,2→115,3→500
  • 负索引:-4→43,-3→90,-2→115,-1→500

切片的核心规则

Python的切片语法为[start:stop:step],核心逻辑是左闭右开:包含start位置的元素,但不包含stop位置的元素;切片方向由step的正负决定:

  • step>0:从左往右(索引增大方向)取元素
  • step<0:从右往左(索引减小方向)取元素

你的切片为什么只输出[115]

看你写的切片nums[-2:-4:-2]:

  1. 起始位置是-2,对应元素115,先加入结果;
  2. 按step=-2的方向,下一个要取的索引是-2 + (-2) = -4;
  3. 但切片的stop参数是-4,根据左闭右开规则,不包含索引-4的元素,因此切片在这里停止,最终只得到[115]。

如何得到预期的[115,43]

你需要让切片包含索引-4的元素,有两种写法:

  • 将stop设为比-4更小的索引(比如-5):nums[-2:-5:-2]
  • 直接省略stop参数(当step为负时,省略stop会默认取到数组最开头之前的位置):nums[-2::-2]

这两种写法都会得到[115, 43]。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 07:15:34