上一篇
Python列表切片规则详解 - 从入门到精通
- Python
- 2025-07-20
- 1561
Python列表切片完全指南
掌握列表切片的核心规则、语法和实用技巧
什么是列表切片?
列表切片是Python中操作列表的强大功能,它允许您从一个列表中提取部分元素来创建新的子列表。
切片的基本语法:list[start:stop:step]
- start: 起始索引(包含)
- stop: 结束索引(不包含)
- step: 步长(可选,默认为1)
切片基础示例
创建示例列表
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print("原始列表:", numbers)
1. 基本切片
# 获取索引2到5的元素
slice1 = numbers[2:6]
print("numbers[2:6] →", slice1) # 输出: [2, 3, 4, 5]
# 获取前三个元素
slice2 = numbers[:3]
print("numbers[:3] →", slice2) # 输出: [0, 1, 2]
# 获取从索引5到末尾
slice3 = numbers[5:]
print("numbers[5:] →", slice3) # 输出: [5, 6, 7, 8, 9]
2. 使用步长
# 每两个元素取一个
slice4 = numbers[::2]
print("numbers[::2] →", slice4) # 输出: [0, 2, 4, 6, 8]
# 从索引1开始,每三个元素取一个
slice5 = numbers[1::3]
print("numbers[1::3] →", slice5) # 输出: [1, 4, 7]
# 反向步长(从后向前)
slice6 = numbers[::-1]
print("numbers[::-1] →", slice6) # 输出: [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
高级切片技巧
3. 负索引切片
# 获取最后三个元素
slice7 = numbers[-3:]
print("numbers[-3:] →", slice7) # 输出: [7, 8, 9]
# 从倒数第五个到倒数第二个
slice8 = numbers[-5:-1]
print("numbers[-5:-1] →", slice8) # 输出: [5, 6, 7, 8]
# 组合使用正负索引
slice9 = numbers[2:-2]
print("numbers[2:-2] →", slice9) # 输出: [2, 3, 4, 5, 6, 7]
4. 切片修改列表
# 修改切片部分的值
numbers[3:6] = [30, 40, 50]
print("修改后:", numbers) # [0, 1, 2, 30, 40, 50, 6, 7, 8, 9]
# 插入元素
numbers[2:2] = [100, 200]
print("插入后:", numbers) # [0, 1, 100, 200, 2, 30, 40, 50, 6, 7, 8, 9]
# 删除元素
numbers[4:7] = []
print("删除后:", numbers) # [0, 1, 100, 200, 50, 6, 7, 8, 9]
切片规则总结
| 语法 | 描述 | 示例 |
|---|---|---|
| list[start:stop] | 从start到stop-1的元素 | [1,2,3,4][1:3] → [2,3] |
| list[:stop] | 从开头到stop-1的元素 | [1,2,3,4][:2] → [1,2] |
| list[start:] | 从start到末尾的元素 | [1,2,3,4][2:] → [3,4] |
| list[::step] | 以step为步长获取元素 | [1,2,3,4][::2] → [1,3] |
| list[::-1] | 反转列表 | [1,2,3,4][::-1] → [4,3,2,1] |
切片使用注意事项
- 切片操作返回的是新列表,原始列表不会被修改(除非显式赋值)
- 当索引超出范围时,切片不会报错,而是尽可能返回有效范围内的元素
- 步长不能为0,否则会引发ValueError
- 负步长表示从右向左提取元素
- 切片操作也适用于其他序列类型,如字符串、元组等
本文由NiuZhongJian于2025-07-20发表在吾爱品聚,如有疑问,请联系我们。
本文链接:http://pjw.521pj.cn/20256064.html
发表评论