python slice函数_slice()函数在Python中做什么?

本文详细解释了Python中slice类的使用方式及其在自定义对象中的应用,通过实例展示了如何利用slice实现类似列表和字符串的切片功能,并讨论了新旧Python版本中getitem与getslice方法的区别。

不,不是全部!

正如前面已经提到的,首先要知道的是slice是一个类,不是返回对象的函数。

slice()实例的第二个用途是在创建自己的对象时将参数传递给getitem()和getslice()方法,这些对象的行为类似于字符串、列表和其他支持切片的对象。

当你这样做时:print "blahblah"[3:5]

自动转换为:print "blahblah".__getitem__(slice(3, 5, None))

因此,当您编写自己的索引和切片对象时:class example:

def __getitem__ (self, item):

if isinstance(item, slice):

print "You are slicing me!"

print "From", item.start, "to", item.stop, "with step", item.step

return self

if isinstance(item, tuple):

print "You are multi-slicing me!"

for x, y in enumerate(item):

print "Slice #", x

self[y]

return self

print "You are indexing me!\nIndex:", repr(item)

return self

试试看:>>> example()[9:20]

>>> example()[2:3,9:19:2]

>>> example()[50]

>>> example()["String index i.e. the key!"]

>>> # You may wish to create an object that can be sliced with strings:

>>> example()["start of slice":"end of slice"]

较旧的Python版本支持方法getslice(而不是getitem)。检查getitem是否有切片是一个很好的做法,如果有,请将其重定向到getslice方法。这样,您将具有完全的向后兼容性。

这就是numpy使用slice()对象进行矩阵操作的方式,很明显,它经常被间接地用于任何地方。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值