一、什么是切片?
切片(slice)就是一种截取索引片段的技术,借助切片技术,我们可以十分灵活地处理序列类型的对象。
包括:正索和负索引两部分,
如下图所示,以list对象list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]为例:
二、切片的基础用法
首先是切片的书写形式:[i : i+n : m] ;其中,i 是切片的起始索引值,为列表首位时可省略;i+n 是切片的结束位置,为列表末位时可省略;m 可以不提供,默认值是1,不允许为0 ,当m为负数时,列表翻转。注意:这些值都可以大于列表长度,不会报越界。
切片的基本含义是:从序列的第i位索引起,向右取到后n位元素为止,按m间隔过滤 。
li = [1, 4, 5, 6, 7, 9, 11, 14, 16]
# 以下写法都可以表示整个列表,其中 X >= len(li)
li[0:X] == li[0:] == li[:X] == li[:]
== li[::] == li[-X:X] == li[-X:]
li[1:5] == [4,5,6,7] # 从1起,取5-1位元素
li[1:5:2] == [4,6] # 从1起,取5-1位元素,按2间隔过滤
li[-1:] == [16] # 取倒数第一个元素
li[-4:-2] == [9, 11] # 从倒数第四起,取-2-(-4)=2位元素
li[:-2] == li[-len(li):-2]
== [1,4,5,6,7,9,11] # 从头开始,取-2-(-len(li))=7位元素
# 步长为负数时,列表先翻转,再截取
li[::-1] == [16,14,11,9,7,6,5,4,1] # 翻转整个列表
li[::-2] == [16,11,7,5,1] # 翻转整个列表,再按2间隔过滤
li[:-5:-1] == [16,14,11,9] # 翻转整个列表,取-5-(-len(li))=4位元素
li[:-5:-3] == [16,9] # 翻转整个列表,取-5-(-len(li))=4位元素,再按3间隔过滤
# 切片的步长不可以为0
li[::0] # 报错(ValueError: slice step cannot be zero)
三、几个切片例子
以下示例均以list对象list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]为例:
print(list)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
1、提取单个元素
print(list[0])
# 0
print(list[-4])
# 6
#当索引只有一个数时,表示切取某一个元素。
2、提取完整对象
print(list[:]) #从左往右
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list[::]) #从左往右
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list[::-1]) #从右往左
# [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
3、多层切片操作
print(list[:8][2:5][-1:])
# [4]
#相当于:
print(list[:8])
# [0, 1, 2, 3, 4, 5, 6, 7]
print(list[:8][2:5])
# [2, 3, 4]
print(list[:8][2:5][-1:])
# [4]
#理论上可无限次多层切片操作,只要上一次返回的是非空可切片对象即可。
-END-
Python入门全套学习资料附带源码:
Python全套学习路线 (以下所有资料文末免费领取)
Python安装包
链接:https://pan.xunlei.com/s/VNlRZOxzhb147tdluq7TWA8DA1?pwd=gx9b#
复制这段内容后打开手机迅雷App,查看更方便
部分福利《看漫画学PythonPDF》
链接:https://pan.xunlei.com/s/VNm4IJCFa20_O9hHoNuKDLdmA1?pwd=557b#
复制这段内容后打开手机迅雷App,查看更方便
Python零基础入门视频
Python项目源码
Python入门到进阶电子书籍和实战案例
👉100道Python练习题👈
检查学习结果。
👉面试刷题👈
资料领取
上述这份完整版的Python全套学习资料已经上传网盘,朋友们如果需要可以微信扫描下方二维码输入“领取资料” 即可自动领取
或者
【点此链接】领取
![](https://img-blog.csdnimg.cn/img_convert/eddc2e2b496fda4c1c01f35f4e5788e9.png)