Python 切片操作
一个完整的切片表达式包含两个“:”,用于分隔三个参数(start_index、end_index、step),当只有一个“:”时,默认第三个参数step=1
切片操作基本表达式:object[start_index : end_index : step]
step:正负数均可,其绝对值大小决定了切取数据时的步长,而正负号决定了切取方向,正表示“从左往右”取值,负表示“从右往左”取值。当step省略时,默认为1,即从左往右以增量1取值。
start_index:表示起始索引(包含该索引本身);该参数省略时,表示从对象“端点”开始取值,至于是从“起点”还是从“终点”开始,则由step参数的正负决定,step为正从“起点”开始,为负从“终点”开始。
end_index:表示终止索引(不包含该索引本身);该参数省略时,表示一直取到数据”端点“,至于是到”起点“还是到”终点“,同样由step参数的正负决定,step为正时直到”终点“,为负时直到”起点“。
例子:
str = [0, 10, 2, 30, 4, 55, 66, 70, 8, 90]
# 1.切取单个值
print(str[1]) # 10
# 从左往右
print(str[:]) # [0, 10, 2, 30, 4, 55, 66, 70, 8, 90]
print(str[::]) # 从左往右[0, 10, 2, 30, 4, 55, 66, 70, 8, 90]
#从右往左
print(str[::-1]) # [90, 8, 70, 66, 55, 4, 30, 2, 10, 0]
print(str[1:6]) # [10, 2, 30, 4, 55] # step=1,从左往右取值,start_index=1,end_index=6 也表示从左往右取值,不包括6
print(str[1:6:-1]) # step=-1,决定了从右往左取值,而start_index=1到end_index=6决定了从左往右取值,两者矛盾。输出为空列表,说明没取到数据。
print(str[:6]) # # step=1,从左往右取值,从“起点0”开始一直取到end_index=6。 [0, 10, 2, 30, 4, 55]
print(str[:6:-1]) # [90, 8, 70] # step=-1,从右往左取值, 下标0取值到下标6,取到了[66,70,8,90],因为step=-1,从右往左取,66是end_index=6不算
print(str[6:]) # [66, 70, 8, 90] step=1,从左往右取值,从start_index=6开始,一直取到“终点”。
print(str[6::-1]) # [66, 55, 4, 30, 2, 10, 0] step=-1,从右往左取值,从start_index=6开始,一直取到“起点”。
print(str[-1:-6]) # [] #step=1,从左往右取值,而start_index=-1到end_index=-6决定了从右往左取值,两者矛盾
print(str[-1:-6:-1]) # step=-1,从右往左取值,start_index=-1到end_index=-6同样是从右往左取值。 [90, 8, 70, 66, 55]
#切片中-1 表示最后一位的意思
print(str[-6:-1]) # # step=1,从左往右取值,而start_index=-6到end_index=-1同样是从左往右取值。 [4, 55, 66, 70, 8]
print(str[:-6]) # [0,10,2,30] step=1,从左往右取值,从0取到-6 start_index=0 到end_index=-6,同样是从左往右取值
print(str[:-6:-1]) # [90, 8, 70, 66, 55] step =-1, 从右向左取值,从-1 取值到 -6
print(str[-6:]) # step=1, 从左往右取值,从start_index=-6开始,一直取到“终点”。从 -6取值到-1(终点) [4, 55, 66, 70, 8, 90]
print(str[-6::-1]) # [4, 30, 2, 10, 0] step =-1, 从右往左取值,从start_index=-6开始,一直取到 "起点"。
print(str[1:-6]) # step =1,从左往右取值 从下标1开始取,取到下标是-6 [10, 2, 30]
print(str[1:-6:-1]) # step =-1, 从右往左取值, 从下标1取到-6,这个是从左向右取值,方向矛盾,所以 []
print(str[-1:6]) # step =1,从左往右取值,从下标-1,取值到下标6,这个从右向左,方向矛盾,所以 []
print(str[-1:6:-1]) # step =-1, 从右往左取值, 从下标-1取到下标6,从右向左,所以 [90, 8, 70]
# 连续切片操作
# [2:5][-1:]
# str[:8] 值 [0, 10, 2, 30, 4, 55, 66, 70]
# 在 str[:8]基础上取[2:5] 的值 [2,30,4]
# 在str[:8][2:5]的值[2,30,4] 取[-1:]的值 [4] [-1:] step=1,从左往右取值,从-1取到终点
print(str[:8][2:5][-1:]) #[4]
# 切片操作的三个参数可以用表达式
# str[2+1:3*2:7%3] 等于 str[3:6:1]
print(str[2+1:3*2:7%3]) #[30, 4, 55]
# 取偶数位置
print(str[::2]) # [0, 2, 4, 66, 8]
# 取奇数位置
print(str[1::2]) #[10, 30, 55, 70, 90]
世界上最美的风景,是自己努力的模样