python中slice与indices的用法

slice是python内置的切片对象

用法一:作为切片和列表等配合使用

a = slice(3) #只规定了终止位
s = [1, 2, 3, 4, 5]
s[a]
#[1, 2, 3]
a = slice(1, 3)
s[a] #规定了起始位和终止位
#[2, 3]
a = slice(1, 4, 2)
s[a]
#[2, 4]

用法二:配合indices使用

indices只能接受整型参数

查阅资料后,官方表述是:indices中的参数规定了“被切片对象”的长度

这里的长度指,被切片对象原来有5个元素,长5,但是这个indices的输入参数是3,那么最后只考虑前3个元素。如果indices的输入参数是6,由于被切片对象没那么多元素,因此最后只考虑5个元素。

说起来很拗口,简单说,原来的列表长度可能很长,但是indices规定,我只考虑前面这么多,后面就不考虑了。如果indices长度超过了原来的列表长度,超过的就不再考虑。

说白了就是规定了切片对象的终止值。

以上讨论的仅是indices输入参数的含义:规定终止值。
slice.indices(self, integer)返回的是一个元组,元组中三个元素分别代表了初始值、终止值、步长
在这里插入图片描述
类似的还有
在这里插入图片描述

也就是说,indices只是slice类的一个属性!!!!!!!!!!!!!

有什么用呢?
众所周知,range使用时也需要规定初始值、终止值、步长。因此常用在for循环里。
在这里插入图片描述
上图等同于:
在这里插入图片描述
注意,必须要加*,因为a.indices是一个元组对象。

为什么大费周章这样做?

在这里插入图片描述
直接把变量传进去不就行了。
这样显然是可以的,使用3个变量可以规定一个for循环的初始、终止、步长。
但如果利用slice类型,只需要占用一个输入位,规定3个变量,可以让程序接口更加简洁!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值