什么是 Python 切片?

135 篇文章 1 订阅
62 篇文章 0 订阅

一、什么是切片?

切片(slice)就是一种截取索引片段的技术,借助切片技术,我们可以十分灵活地处理序列类型的对象。

包括:正索负索引两部分,

如下图所示,以list对象list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]为例:

img

二、切片的基础用法

首先是切片的书写形式:[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全套学习资料已经上传网盘,朋友们如果需要可以微信扫描下方二维码输入“领取资料” 即可自动领取
或者

点此链接】领取

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值