Python 切片深入
学习切片操作 · 难度:进阶 · +15XP
Python 切片深入
Python 切片深入 — 优雅的数据截取艺术
学习前的准备
打开终端,输入 python 进入交互式解释器。切片是 Python 最强大的特性之一。
切片的基本语法 [start:stop:step]
nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(nums[2:5]) # [2, 3, 4] ——索引2到4
print(nums[:4]) # [0, 1, 2, 3] ——开头到3
print(nums[6:]) # [6, 7, 8, 9] ——6到末尾
print(nums[:]) # 复制整个列表
print(nums[::2]) # [0, 2, 4, 6, 8] ——每隔一个
print(nums[1::2]) # [1, 3, 5, 7, 9] ——从1开始隔一个
print(nums[::-1]) # [9, 8, ... 0] ——反转!
print(nums[::-2]) # [9, 7, 5, 3, 1] ——反向隔一个
print(nums[-3:]) # [7, 8, 9] ——最后三个
字符串切片
text = "Hello, Python!"
print(text[0:5]) # 'Hello'
print(text[7:]) # 'Python!'
print(text[::-1]) # '!nohtyP ,olleH'(反转字符串)
# 检查回文
word = "上海自来水来自海上"
print(word == word[::-1]) # True
# 提取文件扩展名
filename = "report.pdf"
ext = filename[filename.rfind('.')+1:]
print(ext) # 'pdf'
切片的高级技巧
# 用切片赋值(替换一段)
data = [1, 2, 3, 4, 5]
data[1:4] = [20, 30, 40]
print(data) # [1, 20, 30, 40, 5]
# 用切片删除
data[1:4] = []
print(data) # [1, 5]
# 用切片插入
data[1:1] = [2, 3, 4]
print(data) # [1, 2, 3, 4, 5]
slice() 对象
s = slice(1, 8, 2)
nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(nums[s]) # [1, 3, 5, 7]
print(s.start, s.stop, s.step) # 1 8 2
小结
切片语法 [start:stop:step] 是 Python 处理序列的利器。nums[::-1] 反转列表,nums[-3:] 取最后三个,nums[::2] 每隔一个取。字符串、列表、元组全部通用。熟悉切片会让你的代码简练而富有表现力。