切片
- 可以实现截取数列,字符串等的一部分
- 简单切片:
l[start:stop]
,得到下标在范围内前闭后开区间范围内的元素,为负数时看作负数对应的下标
- 超出索引范围的切片参数,可以看成把list以空元素延长,进行切片操作后,去掉空元素后得到结果,
例如:
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[-100:5]
[0, 1, 2, 3, 4]
>>> a[5:100]
[5, 6, 7, 8, 9]
>>> a[-100:100]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[100:1000]
[]
- 若
start
比stop
大,则得到空list - 切片参数可以缺省,缺省的参数看作取尽可能大的区间,
例如:
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[:5]
[0, 1, 2, 3, 4]
>>> a[5:]
[5, 6, 7, 8, 9]
>>> a[100:]
[]
- 扩展切片:
a[start:stop:step]
,从start
对应的位置出发,以step
为步长索引序列,直至越过stop
对应的位置,且不包括stop
本身 - 当
step
为负数时,访问时逆序的,缺省时依旧是取尽可能大的区间
例如:
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[5::-1]
[5, 4, 3, 2, 1, 0]
>>> a[:4:-2]
[9, 7, 5]
>>> a[::-1]#得到逆序list
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
- 一些例子:
#截取数列前三个数
l = [1, 2, 3, 4]
l[0:3] #表示从索引0开始取,到索引3为止,不包括索引3
l[:3] #若从0开始,可以省略
l[1:3] #从索引1开始,取两个元素
l[-2:] #从倒数第二个开始取到结尾
l[-2:-1] #取最后两个
l[:10:2] #表示前10个每两个取一个
l[:] #表示原样复制一个list
#tuple也是list,不过不可变,切片后仍是tuple
(0, 1, 2, 3)[:3] #结果:(0, 1, 2)
#字符串也可以看成list,切片后仍是字符串
'ABCDEFG'[::2] #结果'ACEG'