Python的切片符号语法
s[start:end:step]
- s:被切片的对象
- start:切片迭代的起始索引
- end:切片迭代的终止索引,但end索引不包含在切片内
- step:切片步长
其中,start,end和step都可以被忽略。
切片索引示意图
简单用法
>>> s = [0,1,2,3,4,5,6,7,8,9]
>>> s[1:3]
[1,2]
从索引1开始,到索引3结束,不包含索引3。
负索引
>>> s = [0,1,2,3,4,5,6,7,8,9]
>>> s[-2]
8
>>> s[-2:]
[8,9]
需要注意两种写法:
- s[-2]:表示取索引为-2的值
- s[-2:]:表示取从索引-2开始,往正方向到结束的范围的值。
>>> s[-2:-4]
[]
>>> s[-4:-2]
[6,7]
在默认情况,步长为1,方向为正方向
- s[-2:-4:返回的是一个空数组
- s[-4,-2]:正方向,取得索引-4和-3的值[6,7]
>>> s[:-6]
[0,1,2,3]
start忽略,end为负时,表示从索引0开始,正方向到索引-6结束,可以理解为到倒数第6个值结束。
指定步长
可以使用step指定步长,step缺省值为1。
>>> s[::2]
[0,2,4,6,8]
设置步长为2,取得偶数位的值
负步长
步长为正整数时,方向为从0到序列末索引的方向,可以称为正方向。步长为负整数,方向从序列的末索引到0,为反方向。
>>> s[::-1]
[9,8,7,6,5,4,3,2,1,0]
赋值
使用切片取值外,我们也使用切片对序列赋值。
>>> a = [0,1,2]
>>> a[1:3] = [4,5,6]
>>> a
[0,4,5,6]
删除
>>> a = [0,1,2,3]
>>> del a[1:2]
>>> a
[0,2,3]