目录
一、基本介绍
1、什么是切片:
从一个序列中,取出一个子序列,在实际开发中,程序员经常对序列进行切片操作
2、什么是序列:
序列是指,内容连续,有序,可使用索引的一类数据容器
3、列表、元组、字符串均可以视为序列
二、基本语法
1、基本语法
序列[起始索引:结束索引:步长]
1)表示从序列中,从指定的起始索引开始,按照指定的步长,依次取出元素,到指定结束索引为止,截取到一个新的序列
2)切片操作是 前闭后开,也就是 [起始索引:结束索引),即截取的子序列,包括起始索引,但是不包括结束索引的部分
3)步长表示,依次取出元素的间隔
步长为1:一个一个的去处元素
步长为2:每次跳过一个元素取出
步长为N:每次跳过N-1个元素取出
2、举例说明
# 对字符串进行切片操作
str="hello,world"
# 需求:截取"hello"
str_slice=str[0:5:1]
print("str_slice:",str_slice) # hello
# 对列表进行切片
list_a=["jack","tom","yoyo","nono","hsp"]
# 需要截取 ["tom","nono"]
list_slice=list_a[1:4:2]
print("list_slice:",list_slice) # ['tom', 'nono']
# 对元组进行切片
tuple_a=(100,200,300,400,500,600)
# 需要截取 (200,300,400,500)
tuple_slice=tuple_a[1:5:1]
print("tuple_slice:",tuple_slice) # (200, 300, 400, 500)
三、注意事项和使用细节
1、切片语法:序列 [起始索引:结束索引:步长]
- 起始索引如果不写,默认为0
- 结束索引如果不写,默认截取到结尾
- 步长如果不写,默认为1
str="hello,韩顺平教育"
str_slice01=str[:5:1]
print("str_slice01->",str_slice01) # hello
str_slice02=str[1::1]
print("str_slice02->",str_slice02) # ello,韩顺平教育
str_slice03=str[::1]
print("str_slice03->",str_slice03) # hello,韩顺平教育
str_slice04=str[2:5:]
print("str_slice04->",str_slice04) # llo
2、切片语法:序列 [起始索引:结束索引:步长]
- 步长为负数,表示反向取,同时注意起始索引和结束索引也要反向标
str="123456"
str_slice05=str[-1::-1]
print("str_slice05->",str_slice05) # 654321
str_slice06=str[-1:-6:-1]
print("str_slice06->",str_slice06) # 65432
3、切片操作并不会影响原序列,而是返回了一个序列
str="ABCD"
str_slice07=str[1:3:1]
print(f"str->{str} str_slice07->{str_slice07}") # "ABCD" "BC"
四、练习
定义列表 list_name=["Jack","Lisa","Hsp","Paul","Smith","Kobe"]
取出前三个名字,取出后三个名字,并且保证原来顺序
# 定义列表
list_name=["Jack","Lisa","Hsp","Paul","Smith","Kobe"]
# 取出前三个名字
# slice_a=list_name[0:3:1]
slice_a=list_name[:3:]
print("取出前三个名字:",slice_a) # ['Jack', 'Lisa', 'Hsp']
# 取出后三个名字,并且保证原来顺序
# 使用反向切片,然后对元素进行逆序操作
slice_b=list_name[-1:-4:-1]
slice_b.reverse() # 对元素进行逆序操作
print("取出后三个名字:",slice_b) # ['Paul', 'Smith', 'Kobe']