高级特性:切片(Slicing)
🧩 为什么需要切片?
当我们处理序列类型(字符串、列表、元组)时,常常只想获取其中的一部分,例如:
- 从字符串中取出前三个字符
- 从列表中取出奇数位的元素
- 截取元组的后半部分
这时候,如果用循环写代码既繁琐又低效,Python 提供了一个强大而优雅的工具 —— 切片。
🔣 切片的基本语法
序列[开始索引 : 结束索引 : 步长]
注意:
- 含“开始”不含“结束”!
- 步长默认为 1;可以为负数(表示倒序)
📘 示例一:字符串切片
文本 = "Hello, Python!"
打印(文本[0:5]) # 输出:Hello
打印(文本[7:]) # 输出:Python!
打印(文本[:5]) # 输出:Hello
打印(文本[-7:-1]) # 输出:Python
📘 示例二:列表切片
列表 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
打印(列表[2:6]) # 输出:[2, 3, 4, 5]
打印(列表[:4]) # 输出:[0, 1, 2, 3]
打印(列表[::2]) # 输出:[0, 2, 4, 6, 8]
打印(列表[::-1]) # 输出:[9, 8, 7, ..., 0]
📘 示例三:元组切片
元组 = ("周一", "周二", "周三", "周四", "周五")
打印(元组[1:4]) # 输出:("周二", "周三", "周四")
打印(元组[-3:]) # 输出:("周三", "周四", "周五")
💡 小技巧与建议
| 操作 | 示例 | 说明 |
|---|---|---|
| 从头开始 | a[:n] | 从索引 0 开始取到 n-1 |
| 到末尾结束 | a[n:] | 从索引 n 一直到末尾 |
| 间隔取值 | a[::2] | 每隔一个取一次 |
| 倒序切片 | a[::-1] | 从后向前倒序遍历 |
✅ 总结
| 特性 | 适用类型 | 用途 |
|---|---|---|
切片 a[start:end:step] | 字符串、列表、元组 | 快速提取子序列、反转、步进遍历等 |
| 步长可以为负 | 所有序列 | 支持倒序 |