文章目录
- 【4.4】数据容器(序列)的切片
- 一、了解什么是序列
- 二、掌握序列的切片操作
【4.4】数据容器(序列)的切片
一、了解什么是序列
序列是指:内容连续、有序,可使用下标索引的一类数据容器。
列表、元组、字符串,均可以视为序列。
二、掌握序列的切片操作
序列支持切片,即:列表、元组、字符串,均支持进行切片操作。
切片:从一个序列中,取出一个子序列。
# 语法
序列[起始下标:结束下标:步长]
上述语法,表示在序列中,从指定位置开始,(按照步长)依次取出元素,到指定位置结束,得到一个新序列。
注意:
1.起始下标表示从何处开始,可以留空,留空视作从头开始;
2.结束下标(不含结束下标自身)表示何处结束,可以留空,留空视作到结尾结束;
3.步长表示依次取元素的间隔(两相邻元素下标之差。可以把元素理解为一个个台阶,“一步之长”即为一步跨几个台阶)。
例如,步长为1表示依次取出元素;
步长2表示每次跳过1个元素去取;
步长N表示每次跳过N-1个元素去取;
步长为负数表示反向取(注意,这种情况下起始下标和结束下标也要反向设置)。
注意:步长为1时可以省略不写(但步长为-1时不能省略!)。
注意,我们对序列进行切片的操作,不会影响序列本身,而是会得到一个新的序列。
示例:
# 对list进行切片,从1开始,4结束,步长1
my_list = [0, 1, 2, 3, 4, 5, 6]
result1 = my_list[1:4] # 步长是1,所以可以省略不写
print(f"结果1:{result1}") # 结果1:[1, 2, 3]
# 对tuple进行切片,从头开始,到最后结束,步长1
my_tuple = (0, 1, 2, 3, 4, 5, 6)
result2 = my_tuple[:] # 起始和结束不写表示从头到尾,步长为1可以省略
print(f"结果2:{result2}") # 结果2:(0, 1, 2, 3, 4, 5, 6)
# 对str进行切片,从头开始,到最后结束,步长2
my_str = "01234567"
result3 = my_str[::2]
print(f"结果3:{result3}") # 结果3:0246
# 对str进行切片,从头开始,到最后结束,步长-1
my_str = "01234567"
result4 = my_str[::-1] # 等同于将列表反转了
print(f"结果4:{result4}") # 结果4:76543210
# 对列表进行切片,从3开始,到1结束,步长-1
my_list = [0, 1, 2, 3, 4, 5, 6]
result5 = my_list[3:1:-1]
print(f"结果5:{result5}") # 结果5:[3, 2]
# 对元组进行切片,从头开始,到尾结束,步长-2
my_tuple = (0, 1, 2, 3, 4, 5, 6)
result6 = my_tuple[::-2]
print(f"结果6:{result6}") # 结果6:(6, 4, 2, 0)