python集合的切片详解

python数组的切片,换成集合也是同理。
数组[起点i:终点j:步长s]
步长s 为正数时:从第一个元素的值开始取,隔(|s|-1)个数开始取值,可以理解为a[n+1]-a[n]=s;负值时,除这个列表之外的值倒过来取值,|a[n+1]-a[n]|=s;因此取得集合是中间值时,倒过来即使空的;
a = [0,1,2,3,4,5,6,7,8,9]
b = a[i:j] 表示复制a[i]到a[j-1],以生成新的list对象
b = a[1:3] 那么,b的内容是 [1,2]
当i缺省时,默认为0,即 a[:3]相当于 a[0:3]
当j缺省时,默认为len(alist), 即a[1:]相当于a[1:10]
当i,j都缺省时,a[:]就相当于完整复制一份a了
b = a[i:j:s]这种格式呢,i,j与上面的一样,但s表示步进,缺省为1.
所以a[i:j:1]相当于a[i:j]
当s<0时,i缺省时,默认为-1. j缺省时,默认为-len(a)-1;不包含j需要-(j-1);
所以a[::-1]相当于 a[-1:-len(a)-1:-1],也就是从最后一个元素到第一个元素复制一遍。所以你看到一个倒序的东东。

a=[1,2,3,4,5,6,7,8,9,10]
正下标:a=[10,21,32,43,54,65,76,87,98,109]
负下标:a=[1-10,2-9,3-8,4-7,5-6,6-5,7-4,8-3,9-2,10-1]
a[5::-2] 是:[6,4,2] 解析:起点a[5]即6,终点到最后一个值即10,步长-2,
a[5:],步长为负的,应该从第-5个开始倒过来取所有值,即[61,52,41,32,21,12],即[6,4,2]
a[:5:-2] 结果是:[10,8] 解析:起点是a[0]即1,终点是a[5]即6,
a[:5]步长为负的,应该从-1个倒过来取至-4个即[101,92,81,72],即[10,8]
同理请算出:a[-8:7],a[6:9:-1],a[2:8:-5],a[3:6:3],a[:-10:-4],a[-2:-5:-3],a[-2:-7:-2]

答案:[3,4,5,6,7],[],[],[4],[10,6,2],[9],[9,7,5]

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值