切片的语法表达式为:[start_index : end_index : step]
start_index表示起始索引,end_index表示结束索引,step
表示步长,步长不能为0,且默认值为1
切片操作是指按照步长,截取从起始索引到结束索引,但不包含结束索引(也就是结束索引减1)的所有元素。
切片不会改变原对象,而是重新生成了一个新的对象
>>> C = ['A','B','C','D','E','F']
>>> C[0:4:1]
['A', 'B', 'C', 'D']
省略start_index
,保留end_index
,这样会从第一个元素开始,切到end_index - 1
的元素为止
>>> C[:5]
['A', 'B', 'C', 'D', 'E']
保留start_index
,但省略end_index
,这样会从起始索引开始,切到最后一个元素为止:
>>> C[2:]
['C', 'D', 'E', 'F']
省略start_index
、end_index
和step
,这样就表示就表示切片整个序列,也就是复制出了一个新的序列:
>>> C[:]
['A', 'B', 'C', 'D', 'E', 'F']
省略start_index
、end_index
,但保留step
,表示对整个序列,按照步长整除的规则取值:
>>> C[::2]
['A', 'C', 'E']
此时,如果我们将步长设为-1
,那么就可以很方便的得到一个反序的序列了:
>>> C[::-1]
['F', 'E', 'D', 'C', 'B', 'A']
只要起始值start_index
到结束值end_index
在step方向中间有值,就有返回值:
C = ['A','B','C','D','E','F']
下面这四种表达式是等价的:
>>> C[0:3]
['A', 'B', 'C']
>>> C[0:-3]
['A', 'B', 'C']
>>> C[-6:3]
['A', 'B', 'C']
>>> C[-6:-3]
['A', 'B', 'C']
解释:c[0:-3]等价于c[A:D:1],c[-6:3]等价于c[0:3:1]
切片时,一定要保证start_index
到end_index
的方向与步长step
的方向同向,否则会切出空的序列:
>>> C[0:3:-1]
[]
>>> C[3:0:1]
[]