数据容器(序列)的切片
- 序列:内容连续、有序,可使用下标索引的一类数据容器
列表、元组、字符串,均可以视为序列
切片定义
在Python中,切片是一种非常方便的操作,它允许从列表、元组、字符串等序列类型中,获取一部分元素或子序列。
切片通过使用start、stop和step三个参数来指定要获取的元素范围。其中,start指定开始索引,stop指定结束索引(但不包括结束索引对应的元素),step指定步长(默认为1)。
下面是一些示例:
#字符串切片 s = 'Hello, World!' print(s[7:]) # World! print(s[0:5]) # Hello print(s[::2]) # Hlo ol! #列表切片 my_list = [1,2,3,4,5] print(my_list[1:3]) # [2, 3] print(my_list[::2]) # [1, 3, 5] #元组切片 my_tuple = (1,2,3,4,5) print(my_tuple[1:4:2]) # (2, 4)
切片操作还可以用于复制序列,例如:
my_list = [1, 2, 3, 4, 5] copy_list = my_list[:] #复制整个列表 print(copy_list)
切片操作也可以用于修改序列中的元素,例如:
my_list = [1, 2, 3, 4, 5] my_list[1:3] = [6, 7] #将第二和第三个元素替换为6和7 print(my_list) # [1, 6, 7, 4, 5]
总之,切片操作可以让我们更方便地处理序列类型的数据,是Python中非常实用的一种特性。
序列的常用操作 - 切片
序列支持切片,即:列表、元组、字符串,均支持进行切片操作
切片:从一个序列中,取出一个子序列
语法:序列[起始下标:结束下标:步长] 取出的子序列不包含结束下标对应的元素
表示从序列中,从指定位置开始,依次取出元素,到指定位置结束,得到一个新序列
- 起始下标表示从何处开始,可以留空,留空视作从头开始
- 结束下标(不含)表示何处结束,可以留空,留空是做截取到结尾
- 步长表示,依次取出元素的间隔
- 步长1表示,一个个去元素
- 步长2表示,每次跳过一个元素取
- 步长N表示,每次跳过N-1给元素取
- 步长为负数表示,反向取(注意,起始下标和结束下标也要反向标记)
Tip:此操作不会影响序列本身,而是会得到一个新的秀娥(列表、元组、字符串)
""" 演示 对序列进行切片操作 """ # 正向 # 对list进行切片,从1开始,4结束,步长1 my_list = [0, 1, 2, 3, 4, 5, 6] result1 = my_list[1:4] # 步长默认是1,所以可以省略不写 # 不包含结束下标(此处即下标为4的元素)的元素 print(f"结果1:{result1}") # 对tuple进行切片,从头开始,到最后结束,步长1 my_tuple = (0, 1, 2, 3, 4, 5, 6) result2 = my_tuple[:] # 起始和结束不写表示从头到尾,步长为1可以省略 print(f"结果2:{result2}") # 对str进行切片,从头开始,到最后结束,步长2 my_str = "01234567" result3 = my_str[::2] # 从头到尾,步长为2 print(f"结果3:{result3}") 运行效果: 结果1:[1, 2, 3] 结果2:(0, 1, 2, 3, 4, 5, 6) 结果3:0246
# 反向 # 对str进行切片,从头开始,到最后结束,步长-1 my_str = "01234567" result4 = my_str[::-1] print(f"结果2:{result4}") # 对列表进行切片,从3开始,到1结束,步长-1 my_list = [0, 1, 2, 3, 4, 5, 6] result5 = my_list[3:1:-1] print(f"结果5:{result5}") # 对元组进行切片,从头开始,到尾结束 my_tuple = (0, 1, 2, 3, 4, 5, 6) result6 = my_tuple[::-2] print(f"结果6:{result6}") 运行效果: 结果4:76543210 结果5:[3, 2] 结果6:(6, 4, 2, 0)
- 练习案例:序列的切片实践
""" 序列的切片课后练习 my_str = "nohtyp1,ih" 取出python """ my_str = "nohtyp1,ih" # 倒序字符串,切片取出 result1 = my_str[::-1][4:10] print(f"方式1结果:{result1}") # 切片取出,然后倒序 result2 = my_str[0:6][::-1] print(f"方式2:{result2}") # split分割”,“,replace替换1为空,倒序字符串 step1_list = my_str.split(",") result3 = step1_list[0].replace("1", "")[::-1] print(f"方式3:{result3}") 运行效果: 方式1结果:python 方式2:python 方式3:python