在Python中,切片(slice)操作是处理序列(如列表、字符串、元组等)的一种非常常用且强大的工具。 以下是一些常见的切片操作示例:
基本切片
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(lst[2:5]) # 输出: [3, 4, 5]
切片中的步长
可以通过指定步长(step)来实现更复杂的切片操作:
print(lst[1:8:2]) # 输出: [2, 4, 6, 8],从索引1到索引8(不包括8),步长为2
print(lst[::3]) # 输出: [1, 4, 7, 10],从头到尾,步长为3
print(lst[::-1]) # 输出: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1],反转列表
省略开始和结束索引
可以省略开始和结束索引,分别表示从头开始或到结尾:
print(lst[:5]) # 输出: [1, 2, 3, 4, 5],从头到索引5(不包括5)
print(lst[5:]) # 输出: [6, 7, 8, 9, 10],从索引5到尾
多维数组切片
对于多维数组(如使用NumPy的数组),切片操作也非常灵活:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr[:, 1]) # 输出: [2, 5, 8],选取所有行的第二列
print(arr[1, :]) # 输出: [4, 5, 6],选取第二行的所有列
print(arr[1:, 1:]) # 输出: [[5, 6], [8, 9]],选取第二行及以后,第二列及以后
使用切片对象
可以使用 slice
对象来创建切片,这在需要动态生成切片时非常有用:
s = slice(2, 5)
print(lst[s]) # 输出: [3, 4, 5]
切片的负索引
负索引用于从序列末尾开始计数:
print(lst[-3:]) # 输出: [8, 9, 10],最后三个元素
print(lst[:-3]) # 输出: [1, 2, 3, 4, 5, 6, 7],除了最后三个元素