slice() 切片对象
最后更新:2026-09-22
slice() 切片对象
slice(stop) 或 slice(start, stop[, step]) 返回切片对象;用于 list/tuple 等的 __getitem__。
| 分类 | 内置函数 |
|---|---|
| 类型 | 内置函数 |
| Python 版本 | all |
📝 语法
slice(stop)
slice(start, stop[, step])
⚙️ 参数
| stop 必选 | 结束索引(不含);单参形式下它就是切片终点。 |
|---|---|
| start 可选 | 起始索引(含),省略时为 None。(默认值:None) |
| step 可选 | 步长,省略时为 None。(默认值:None) |
返回值:返回 slice 对象,含 start/stop/step 三个属性,可传给 __getitem__。
💥 异常
TypeError— 参数未实现 __index__(不是整数)时抛出。
▶ 示例
编辑下方代码,点击运行,在输出面板查看结果:
运行结果:
[1, 3]
💡 相关案例
更多实战案例即将上线,敬请期待。
❓ 常见问题
Qslice(1, 5, 2) 和 lst[1:5:2] 是一回事吗?
A是,lst[1:5:2] 内部就是调用 lst[slice(1, 5, 2)];slice 对象适合动态构造切片(如切片参数来自配置或用户输入)。
Qslice 对象的 start/stop/step 一定是整数吗?
A不,可省略为 None:slice(5) 的 start 和 step 都是 None,语义是“从头到索引 5”,与 lst[:5] 一致。
Q自定义类怎么支持切片?
A实现 __getitem__(self, key),当 key 是 slice 对象时解析它的 start/stop/step 做对应逻辑。
Qslice 参数必须是整数吗?
A是,传非整数(如 slice('a', 'b'))会抛 TypeError,参数必须实现 __index__。