Python中切片原理
0 下标说明
无论是str
还是list
等,从左到右
下标从0
开始,从右到左
下标从-1
开始
如:str = 'python'
,下标示意图如下:
1 两参数:[开始:结束]
知识点1: 遵循左闭右开
原则,如:[0:9]
等价于数学中的[0,9)
示例:
# 字符串中用法
str = 'python'
print(str[0:3]) # pyt 左闭右开,从位置0到 位置3前的位置2
print(str[0:5]) # pytho 左闭右开,从位置0到 位置5前的位置4
print(str[:-1]) # pytho 左闭右开,从位置0到 位置-1前的-2位置
print(str[:-2]) # pyth 左闭右开,从位置0到 位置-2前的-3位置
# 列表中用法 (同字符串用法!)
list = [1, 2, 3, 4 , 5, 6]
print(list[0:3]) # [1, 2, 3] 左闭右开 从位置0到位置2
print(list[0:5]) # [1, 2, 3, 4, 5] 左闭右开 从位置0到位置4
print(list[:-1]) # [1, 2, 3, 4, 5] 左闭右开 从位置0到位置-1前的-2,即:位置4
print(list[:-2]) # [1, 2, 3, 4] 左闭右开 从位置0到位置-3,即:位置3
知识点2: 缺省值:
(1)左边缺省,默认为0
;
(2)右边缺省,默认到结束位置
;
(3)左、右都缺省,默认原始值
,即:str[:]、str 输出相同,相当于str[:]复制了str
示例:
# 字符串中用法
str = 'python'
print(str[:3]) # pyt
print(str[:5]) # pytho
print(str[1:]) # ython
print(str[0:]) # python
print(str[:]) # python
# 列表中用法
list = [1, 2, 3, 4 , 5, 6]
print(list[:3]) # [1, 2, 3]
print(list[:5]) # [1, 2, 3, 4, 5]
print(list[1:]) # [2, 3, 4, 5, 6]
print(list[0:]) # [1, 2, 3, 4, 5, 6]
print(list[:]) # [1, 2, 3, 4, 5, 6]
2 三参数:[开始:结束:步长]
知识点1: 步长的正负
步长的值>
0,则:从左往右
取值
步长的值<
0,则:从右往左
取值
知识点2: 步长的取值
步长的值 =
n,表示:向左或右数,n步取一个值
知识点3: 缺省值
前两个参数[开始:结束]
同二参数
情形,步长缺省值为:1
,即:从左往右数1步取一个值
示例:
# 字符串中用法
str = 'python'
print(str[::]) # python
print(str[::1]) # python
print(str[::2]) # pto 从左往右数,数2步,取一个值
print(str[::-1]) # nohtyp 从右往左数,数1步,取一个值,即:取全部值
print(str[::-2]) # nhy 从右往左数,数2步,取一个值
# 列表中用法
list = [1, 2, 3, 4 , 5, 6]
print(list[::]) # [1, 2, 3, 4, 5, 6]
print(list[::1]) # [1, 2, 3, 4, 5, 6]
print(list[::2]) # [1, 3, 5]
print(list[::-1]) # [6, 5, 4, 3, 2, 1]
print(list[::-2]) # [6, 4, 2]
# [n::-1] 示例
# 先找下标值n,再翻转(从右到左)取值
str = 'python'
list = [1, 2, 3, 4 , 5, 6]
print(str[1::-1]) # yp 先找到下标1的值:y,从右往左取值:yp
print(str[2::-1]) # typ 先找到下标2的值:t,从右往左取值:typ
print(list[1::-1]) # [2, 1] 先找到下标1的值:2,从右往左取值:[2, 1]
print(list[2::-1]) # [3, 2, 1] 先找到下标2的值:3,从右往左取值:[3, 2, 1]