在Python中,切片(slice)是对序列型对象(如list, string, tuple)的一种高级索引方法。
slice() 函数实现切片对象,主要用在切片操作函数里的参数传递。
slice() 函数返回 slice 对象(切片)。slice 用于指定如何对序列进行裁切。
slice(start, end, step)
参数 | 描述 |
---|---|
start | 可选。整数,指定在哪个位置开始裁切。默认为 0。 |
end | 可选。整数,指定在哪个位置结束裁切,裁切结果不包含索引为end的值。 |
step | 可选。整数,指定裁切的步进值(间距)。默认为 1。 |
代码如下(示例):
#对元组切片
>>>a = ("a", "b", "c", "d", "e", "f", "g", "h")
>>>x = slice(2)#定义一个slice() 函数,用于在切片操作时传递参数
>>>x
slice(None, 2, None)
>>>a[x]
('a', 'b')
>>>y= slice(3,5)
>>>y
slice(3, 5, None)
>>>a[y]
('d', 'e')
>>>z=slice(0, 8, 3)
>>>z
slice(0, 8, 3)
>>>a[z]
('a', 'd', 'g')
>>>o=slice(0,-1) #-1表示左后一个位置的索引
>>>a[o]
('a', 'b', 'c', 'd', 'e', 'f', 'g')
>>>p=slice(-2,-1)
>>>a[p]
('g',)
#对列表/字符串切片
>>>st='I love China!'
>>>st[x]
'I '
>>>st[y]
'ov'
>>>st[z]
'Io '
#对numpy数组进行切片
>>>import numpy as np
>>>arr=np.arange(1, 10) #一维数组切片
>>>arr
array([1, 2, 3, 4, 5, 6, 7, 8, 9])
>>>arr[x]
array([0, 1])
>>>arr=arr.reshape(3,3) #二维数组切片
>>>arr
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
>>>arr[:,x] #行取所有行,列按照x取前2列
array([[1, 2],
[4, 5],
[7, 8]])
#对torch中tensor进行切片
>>>import torch
>>>t = torch.arange(1, 17).view(4, 4)
>>>t
tensor([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12],
[13, 14, 15, 16]])
>>>t[x,:] #行按照x取前2行,列取所有列
tensor([[1, 2, 3, 4],
[5, 6, 7, 8]])
总结了Python slice() 函数用法,并展示了一些常见用法。
Python slice() 函数(W3school)
Python slice() 函数|菜鸟教程