Python-切片的理解(Slicing)

之前对于切片的不理解,再次看书有的一些理解,于是记下来以便日后查看.

#这里有一个列表
>>> a = range(10)
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

合法的切片语句形如[a : b]或者形如[a : b : c]都满足一个条件,就是a <= x < b.

其中前者的步长默认为1, 后者的步长为c, 肯能是正的也可能是负的,但是不可以为0.

更好的理解是for(int i = a ; x < b ; x += c )或者for(int i = a ; x > b ; x += c )

有一种特殊情况不能这样解释.上面讲述都是从左往右或者从右往左一个方向去元素,但下面这个例子是从左右两个方向取元素.从左往右以下标0开始,从右往左以下标-1开始.但是依然是一个半闭区间
EG:

#就是从左右两边同时取
>>> a[3:-3]
[3, 4, 5, 6]

下面几种变形:


>>> a[0::4]#for(int i = 0 ; x < 10 ; x += 4 )
[0, 4, 8]

>>> a[8:3:-2]#for(int i = 6 ; x > 3 ; x += -2 )
[8, 6, 4]

>>> a[:5:-2]#for(int i = 10 ; x > 5 ; x += -2 )
[9, 7]

>>> a[5::-2]#for(int i = 5 ; x > -1 ; x += -2 )可以这样理解,但是不能写成a[5:-1:-2]
[5, 3, 1]

如何判断一个为空的表达式呢?有个方法.

x[a]比x[b]后出现在原序列中.

EG:

>>>x[5 : 1]

x[5]比x[1]后出现在原序列中.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值