切片操作
对有序数列使用下标操作进行区域切割。
最常见的的切片操作,以list为例(其他的有序数列,例如tuple和str的切片操作都跟list相同):
lst[start:end:step]
start:起始索引,end:结束索引,step步长
切片操作的取值区域,包含起始索引的元素,不包含结束索引的元素
正数索引,从0开始,从左往右计数
负数索引,从-1开始,从右往左计数
实例:如果step(步长)为默认值(1)或者其他正整数时,切片顺序是从左往右,start(起始索引)必须在end(结束索引)前面,否则会得到一个空列表。
>>> lst
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> lst[0:8]
[0, 1, 2, 3, 4, 5, 6, 7]
>>> lst[0:-2]
[0, 1, 2, 3, 4, 5, 6, 7]
>>> lst[-8:6]
[2, 3, 4, 5]
>>> lst[-2:3]
[]
>>> lst[7:2]
[]
>>> lst[-2:-5]
[]
实例:如果step(步长)为负数时,切片顺序是从右往左,start(起始索引)必须在end(结束索引)后面,否则会得到一个空列表。
返回的结果相对于原列表是逆序的
>>> lst
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> lst[7:2:-1]
[7, 6, 5, 4, 3]
>>> lst[-1::-1]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
>>> lst[-1:-5:-1]
[9, 8, 7, 6]
>>> lst[-1:-7:2]
[]
>>>
实例:step为默认(1)或-1时,切片计数为正常的顺序取值,当大于1,或者小于-1时,则根据step跳跃取值,步长是2或-2时是两位元素中取第一位,第二位丢弃,以此类推。
>>> lst[::2]
[0, 2, 4, 6, 8]
>>> lst[::3]
[0, 3, 6, 9]
>>> lst[-1::-2]
[9, 7, 5, 3, 1]
>>> lst[-1::-3]
[9, 6, 3, 0]
实例:当start或end超出lst的索引范围的情况,start < 索引范围的第一位,end >索引范围的最后一位,start取值从索引第一位开始,end取值为len(lst)
>>> lst[-100:5]
[0, 1, 2, 3, 4]
>>> lst[2:100]
[2, 3, 4, 5, 6, 7, 8, 9]
>>> lst[-100:100]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
实例:start为0可以省略,end为list的长度时可以省略,等效于lst.copy()方法
>>> lst
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> lst[:]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> lst[::-1]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
>>>