Python-切片的理解(Slicing)

来源:互联网 发布:打字用什么软件 编辑:程序博客网 时间:2024/05/23 16:43

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

#这里有一个列表>>> 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