python中slice是什么类型_python中的slice对象

python中的slice对象

slice是python的内建类型,主要用于构建灵活的切片,或者通过__getitem__实现更好的自建类型。

以一维切片为例,seq[]里面既可以传整数,也可以传slice对象,即

seq = ‘abcdef‘

seq[1]

seq[1:3]

s = slice(1, 3)

seq[s]

多维对象支持整数和slice对象的组合,实际内部__getitem__得到的是一个元组,里面的元素要么是整数,要么是slice对象。

seq[start:stop:end]其效果就是seq._getitem_ (slice(start, stop, end))。

以下是一个从fluent python中摘出的例子:

>>> class Myseq:

def __getitem__(self, index):

return index

>>> s = Myseq()

>>> s[1]

1

>>> s[1:4]

slice(1, 4, None)

>>> s[1:4:2]

slice(1, 4, 2)

>>> s[1:4:2, 9]

(slice(1, 4, 2), 9)

>>> s[1:4:2, 7:9]

(slice(1, 4, 2), slice(7, 9, None))

dir(slice)得到其中比较有用的属性有start, stop, end和方法indices。

start, stop, end非常好理解就是切片的开端、末端和步长。

indices是一个可以启发slice对象如何作用切片的方法,其调用形式如下:

S.indices(len) -> (start, stop, stride)

下面继续用fluent python中的例子:

>>> slice(None, 10, 2).indices(5)

(0, 5, 2)

>>> slice(-3, None, None).indices(5)

(2, 5, 1)

假设有一序列seq = ‘ABCDE‘, len(seq) = 5

‘ABCDE‘[:10:2]等价于‘ABCDE‘[0:5:2]

‘ABCDE‘[::-3]等价于‘ABCDE‘[2:5:1]

从上面就可以看出indices的作用,返回元组形式的标准化的切片。

原文:https://www.cnblogs.com/gujianmu/p/12828750.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值