首页 > 编程语言 > 详细

python中的slice对象

时间:2020-05-04 23:44:58      阅读:72      评论:0      收藏:0      [点我收藏+]

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的作用,返回元组形式的标准化的切片。

python中的slice对象

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!