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

Python列表切片操作lst[:5:-2]输出为空而非预期10的问题咨询

Python列表负步长切片返回空的原因

你使用的示例列表如下:

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

各元素对应的索引映射为:

  • 50:正索引0 / 负索引-5
  • 34:正索引1 / 负索引-4
  • 98:正索引2 / 负索引-3
  • 8:正索引3 / 负索引-2
  • 10:正索引4 / 负索引-1

核心原因

Python切片遵循两个核心规则,之前的理解刚好忽略了这两点:

  1. 切片的终止索引是不包含的,只要起始索引和终止索引位置重合,就会直接返回空列表
  2. 步长为负时,遍历方向是从右往左,只有起始索引的位置在终止索引的右侧时,才会遍历返回元素,否则直接返回空

针对lst[:5:-2]的拆解分析

  • 步长为-2,省略起始索引时,默认起始索引为列表最后一个元素的位置,即负索引-1/正索引4,对应值10,这部分理解是正确的
  • 填写的终止索引为5,这个索引值已经超出了列表的最大正索引4,对应位置在列表最末尾的右侧
  • 遍历方向为向左,当前的起始位置(正索引4)本身就在终止位置(正索引5)的左侧,向左遍历永远不可能到达更靠右的终止位置,因此切片直接返回空列表

预期输出[10]的实现方式

如果要取到[10],把终止索引设置在起始索引的左侧即可,示例如下:

print(lst[-1:3:-2])
# 输出:[10]

这个写法里终止索引是正索引3(对应值8),起始位置4在3的右侧,向左遍历第一个元素就是4对应的10,再走步长-2就到了2,已经越过终止位置3,因此只返回[10]。


内容的提问来源于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 13:06:04