Python 中的切片(slicing)是一种强大且灵活的操作,可以用于处理序列类型的数据,如字符串、列表、元组等。切片操作允许你从序列中提取子序列,修改序列的部分内容,或者创建新的序列。以下是一些常见的切片使用场景:
1. 提取子序列
字符串
s = "Hello, World!"
sub_s = s[7:12]
print(sub_s) # 输出: World
列表
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
sub_lst = lst[2:5]
print(sub_lst) # 输出: [3, 4, 5]
2. 反转序列
字符串
s = "Hello, World!"
reversed_s = s[::-1]
print(reversed_s) # 输出: !dlroW ,olleH
列表
lst = [1, 2, 3, 4, 5]
reversed_lst = lst[::-1]
print(reversed_lst) # 输出: [5, 4, 3, 2, 1]
3. 跳跃切片(步长)
字符串
s = "Hello, World!"
every_second_char = s[::2]
print(every_second_char) # 输出: Hlo ol!
列表
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
every_third_element = lst[::3]
print(every_third_element) # 输出: [1, 4, 7]
4. 修改序列的部分内容(仅限可变序列,如列表)
lst = [1, 2, 3, 4, 5]
lst[1:3] = [8, 9]
print(lst) # 输出: [1, 8, 9, 4, 5]
5. 清空序列
列表
lst = [1, 2, 3, 4, 5]
lst[:] = []
print(lst) # 输出: []
6. 复制序列
列表
lst = [1, 2, 3, 4, 5]
copy_lst = lst[:]
print(copy_lst) # 输出: [1, 2, 3, 4, 5]
7. 提取特定范围的元素
列表
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
sub_lst = lst[2:8:2]
print(sub_lst) # 输出: [3, 5, 7]
8. 删除序列的部分内容
列表
lst = [1, 2, 3, 4, 5]
del lst[1:3]
print(lst) # 输出: [1, 4, 5]
9. 多维数组的切片(使用 NumPy)
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
sub_arr = arr[:2, 1:]
print(sub_arr)
# 输出:
# [[2 3]
# [5 6]]
10. 提取文件路径中的文件名和扩展名
file_path = "/path/to/some/file.txt"
file_name = file_path.split('/')[-1]
name, extension = file_name.split('.')
print(name) # 输出: file
print(extension) # 输出: txt