python中的切片非常方便,可以灵活的对list、tuple、string、range进行操作,得到想要的数据;
平时我们在访问序列中的元素,通过索引可以正向访问,也可以反向访问,切片同样也可以,下面举例我常用的操作方法:
切片的语法为:
[start_index,end_index,step]
start_index:起始索引位置
end_index:结束索引位置
step:步长
切片的功能:从起始位置到结束位置的前一个位置,按步长来提取数据并生成新的对象,并且不会改变原数据类型;
举例1,都写全:
L = [2,4,5,6,2,6,0,4] #长度8
result = L[2:6:1]
print(result)
结果:[5,6,2,6]
可以看出,按步长1,从索引2开始,到索引6-1结束的所有元素
备注:以上的这些操作也同样适用于字符串或者元组中,对字符串进行反向显示,使用切片可以非常方便的做到;
举例2,省略步长:
L = [2,4,5,6,2,6,0,4] #长度8
result = L[2:6]
print(result)
结果:[5,6,2,6]
可以看出,步长默认为1,可省略
举例3,开始索引省略:
L = [2,4,5,6,2,6,0,4] #长度8
result = L[:5]
print(result)
结果:[2,4,5,6,2]
可以看出,按步长1,从第一个元素开始,到索引5-1结束的所有元素
举例4,结束索引省略:
L = [2,4,5,6,2,6,0,4] #长度8
result = L[3:]
print(result)
结果:[6,2,6,0,4]
可以看出,按步长1,从索引3元素开始,到最后一个元素
举例5,开始、结束索引都省略:
L = [2,4,5,6,2,6,0,4] #长度8
result = L[:]
print(result)
结果:[2,4,5,6,2,6,0,4]
可以看出,相当于从第一个到最后一个元素,复制了一个新的序列
举例6,步长非1但为正整数:
L = [2,4,5,6,2,6,0,4] #长度8
result = L[2:6:2]
print(result)
结果:[5,2]
可以看出,按步长2,从索引2元素开始,到到索引6-1元素结束的所有元素
举例7,步长为负整数:
L = [2,4,5,6,2,6,0,4] #长度8
result = L[-2:-7:-3]
print(result)
结果:[0,6]
可以看出,按步长2,从索引-2元素开始,到到索引-7+1元素结束的所有元素
备注:切片时一定要保证步和的方向与开始、结束的方向一致,否则可能会得到一个空序列
举例8,开始、结束省略,步长-1,可得到一个反向的序列:
L = [2,4,5,6,2,6,0,4] #长度8
result = L[::-1]
print(result)
结果:[4, 0, 6, 2, 6, 5, 4, 2]
可以看出,开始、结束索引都省略,可以得到一个反向的序列