Python 语法精炼17
切片
切片(Slicing) 是对序列类型(如 list、str、tuple 等)进行区间访问的一种方式。
它允许你通过索引区间提取部分元素,而不修改原序列。
基本语法:
1 | seq[start:end:step] |
| 参数 | 含义 | 默认值 |
|---|---|---|
start |
起始索引(包含) | 0 |
end |
结束索引(不包含) | 序列长度 |
step |
步长 | 1 |
基础操作
1 | nums = [0, 1, 2, 3, 4, 5] |
负索引
在 Python 中,索引可以为负数,表示从序列末尾开始计数。
| 索引 | 含义 |
|---|---|
-1 |
最后一个元素 |
-2 |
倒数第二个元素 |
-3 |
倒数第三个元素 |
📘 示例:
1 | nums = [10, 20, 30, 40, 50] |
🔁 负索引 + 切片
1 | nums = [10, 20, 30, 40, 50] |
👉 注意:切片的“方向”由 步长 step 决定,而不是索引的正负。
切片步长
step 参数控制切片的“跳跃”间隔和方向。
正步长
从左到右取:
1 | nums = [0, 1, 2, 3, 4, 5] |
负步长
当 step 为负数时,表示从右向左反向取值,此时必须保证 start > end 才能取到结果。
1 | nums = [0, 1, 2, 3, 4, 5] |
解释:start = 4 → 从值 4 开始,end = 1 → 取到索引 2,step = -1 → 每次向左取一个
高级应用
切片不只是“取值”用的,还可以进行以下操作:
修改部分内容
1 | nums = [0, 1, 2, 3, 4, 5] |
删除部分元素
1 | nums = [0, 1, 2, 3, 4, 5] |
插入新元素
切片替换时长度可变:
1 | nums = [1, 2, 3] |
字符串切片
字符串虽然不能修改,但可以切片得到新字符串:
1 | s = "Python" |
边界行为
Python 的切片非常宽容,不会抛出越界错误:
1 | nums = [1, 2, 3, 4] |
这种“安全边界”是切片的优势之一。
底层原理
当你写:
1 | nums[start:end:step] |
Python 实际上会创建一个 slice 对象:
1 | slice_obj = slice(start, end, step) |
你甚至可以手动创建 slice 对象:
1 | s = slice(1, 5, 2) |
总结表
| 功能 | 示例 | 说明 |
|---|---|---|
| 基础切片 | a[1:4] |
索引1~3 |
| 省略参数 | a[:3], a[2:] |
默认起点或终点 |
| 步长 | a[::2] |
每隔一个取一个 |
| 负步长 | a[::-1] |
反向取值 |
| 负索引 | a[-3:-1] |
倒数第3到倒数第2 |
| 修改切片 | a[1:3] = [9,9] |
替换部分内容 |
| 删除切片 | del a[:2] |
删除部分内容 |
| slice对象 | a[slice(1,5,2)] |
等价写法 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Telason!
