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

如何获取Python列表切片操作所选中的索引?

问题:从slice对象提取对应列表的具体索引

给定列表:

things = ["a", "b", "c", "d", "e", "f"]

以及一个作用于该列表的slice对象:

s = slice(-2, None, None)

已知things[-2:]会得到['e', 'f'],现在需要提取该切片对应的具体索引,期望结果是[4, 5]。

当前实现方式:

print([i for i in range(len(things))][s])  # [4, 5]

请问有没有更Pythonic的实现方式?


更Pythonic的实现方式

可以利用slice对象自带的indices()方法——它会根据序列的长度,将切片的start、stop、step转换为有效的正整数索引,返回一个三元组(start, stop, step)。之后直接用range()生成对应的索引即可:

things = ["a", "b", "c", "d", "e", "f"]
s = slice(-2, None, None)

# 获取切片对应的有效起始、结束、步长
start, stop, step = s.indices(len(things))
# 生成索引列表
target_indices = list(range(start, stop, step))
print(target_indices)  # 输出: [4, 5]

这种方式的优势在于:

  • 更高效:无需先生成完整的索引列表再切片,避免了不必要的内存开销
  • 更符合Python惯用写法:直接利用slice对象的内置方法处理索引转换,逻辑更清晰

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 02:44:59