python入门基础学习之数据容器(序列)的切片

数据容器(序列)的切片

序列:内容连续、有序,可使用下标索引的一类数据容器。
列表、元组、字符串,均可以视为序列。

元素1,元素2,元素n
  0,  1,  n  ——正向下标
 -n,  -2,   -1  ——反向下标

序列的典型特征就是:有序并可用下标索引字符串、元组、列表均满足这个要求。

序列的常用操作-切片

序列支持切片,即:列表、元组、字符串,均支持进行切片操作。
切片:从一个序列中,取出一个子序列。

语法:序列[起始下标:结束下标:步长]

表示从序列中,从指定位置开始,依次取出元素,到指定位置结束,得到一个新序列:
1、起始下标表示从何处开始,可以留空,留空视作从头开始
2、结束下标(不含)表示何处结束,可以留空,留空视作截取到结尾
3、步长表示,依次取元素的间隔:
①步长1表示,一个个取元素
②步长2表示,每次跳过1个元素取
③步长N表示,每次跳过N-1个元素取
④步长为负数表示,反向取(注意,起始下标和结束下标也要反向标记)

注意,此操作不会影响序列本身,而是会得到一个新的序列(列表、元组、字符串)。

示例:

# 对list进行切片,从1开始,4结束,步长1
my_list = [0, 1, 2, 3, 4, 5, 6]
result1 = my_list[1:4]  # 默认步长是1,所以可以省略不写
print(f"结果1:{
      
      result1}")

# 对tuple进行切片,从头开始,到最后结束,步长1
my_tuple = (0, 1, 2, 3, 4, 5, 6)
result2 = my_tuple[:]  # 起始和结束不写表示从头到尾,步长为1可以省略
print(f"结果1:{
      
      result2}")

# 对str进行切片,从头开始,到最后结束,步长2
my_str = "0,1,2,3,4,5,6,7"
result3 = my_str[::2]
print(f"结果1:{
      
      result3}")

# 对str进行切片,从头开始,到最后结束,步长-1
my_str = "0,1,2,3,4,5,6,7"
result4 = my_str[::-1]  # 等同于序列反转了
print(f"结果1:{
      
      result4}")

# 对列表进行切片,从3开始,1结束,步长-1
my_list = [0, 1, 2, 3, 4, 5, 6]
result5 = my_str[3:1:-1]
print(f"结果1:{
      
      result5}")

# 对元组进行切片,从头开始,到最后结束,步长-2
my_tuple = (0, 1, 2, 3, 4, 5, 6)
result6 = my_tuple[::2]
print(f"结果1:{
      
      result6}")

运行结果:

结果1:[1, 2, 3]
结果1:(0, 1, 2, 3, 4, 5, 6)
结果1:01234567
结果1:7,6,5,4,3,2,1,0
结果1:,1
结果1:(0, 2, 4, 6)

序列的切片总结

1、序列:内容连续、有序,支持下标索引的一类数据容器。
2、可以视为序列:列表、元组、字符串。
3、序列如何做切片:序列[起始:结束:步长]
4、起始可以省略,省略从头开始。
5、结束可以省略,省略到尾结束。
6、步长可以省略,省略步长为1(可以为负数,表示倒序执行)。

序列切片实践

# 三种方式取出我是二狗
my_str = "狗二是我1,nohtyp学"
# 倒序字符串,切片取出
result1 = my_str[::-1][9:13]
print(f"1的结果:{
      
      result1}")

# 切片取出,然后倒序
result2 = my_str[0:4][::-1]
print(f"2的结果:{
      
      result2}")

# split分隔“,” replace替换“来”为空,倒序字符串
result3 = my_str.split(",")[0].replace("1", "")[::-1]
print(f"3的结果:{
      
      result3}")

运行结果:

1的结果:我是二狗
2的结果:我是二狗
3的结果:我是二狗

猜你喜欢

转载自blog.csdn.net/weixin_44996886/article/details/132678423