python切片操作方法的实例总结
作者:rap小浣熊 发布时间:2021-02-28 12:51:01
文章参考自:link.
前言
最近学习python切片,时而醍醐灌顶时而云里雾里,今天终于弄清楚了 python切片 里面自己经常疑惑的地方,记录一下,方便以后查看。
一、切片的2种索引方向
如果掌握切片方法,就能对所有目标值进行随意切取,然鹅可切片的目标对象有2种索引方向:正索引、负索引。如下图所示,
以 a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]举例:
这个字符串 a 的正索引是由左往右,头下标是0,尾下标是9;
它的负索引是由右往左,头下标是-1,尾下标是-10.
二、切片的操作方式
要想成功完成切片,那么需要包含2个 ‘ :’符号,以及3个参数,分别是start_index、end_index、step,一个完整的切片表达式如下所示:
切片操作基本表达式:object[start_index : end_index : step]
1、开始索引 start_index :表示的是开始切片的位置,并且切片结果包含该索引下的值;
2、终止索引 end_index: 表示的结束切片的位置,并且切片结果不包含该索引下的值;
3、步长step :表示切取的步长值,可正可负,step为正时,索引方向为正方向,step为负时,索引方向为负方向,当step值省略时,默认取值为1。
切记:步长正负决定切片方向,非常重要!!
当未写start_index、end_index的值时,都默认,从索引的端点处开始
三、一些基本操作
以下举例对象都是列表 a = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
1、切取单个对象
切取索引为3的位置所对应的值:
2、切取整个列表
不填写值的时候,从端点处开始
3、步长step正负值 决定索引方向的一些案例
step=1,由左向右,包含start_index =1索引本身包括的值,不包括终止索引end_index =5本身包含的值。
// An highlighted block
>>> a [1: 5: ]
[1, 2, 3, 4]
>>> # 步长step = 1,默认值,由左往右正索引方向
step = -1,由右向左,依旧不包含终止索引=5本身所包含的值
// An highlighted block
>>> a [ : 5 :-1]
[9, 8, 7, 6]
>>> # 步长step= -1,负索引,
起始索引没写,表示从端点开始由右往左,终止索引是5
索引方向相互矛盾,值为空
// An highlighted block
>>> a [7 : 2 ]
[]
>>> # 这是因为起始索引为7终止索引为2,方向是由右往左,
>但是步长step默认是1,表示正索引,由左往右,两者方向矛盾值为空
索引值为负的情况,一切以step值正负为准,决定索引方向!
// An highlighted block
>>> a [ -6 : :]
[4, 5, 6, 7, 8, 9]
>>> #起始于 start_index = -6,步长为1,由左向右
根据前面所学,切片结果包含起始索引位置的值,但不包含终止索引位置的值,这种情况指的是给定了具体的终止索引,如下:
// An highlighted block
>>> #给了明确的终止索引位置,那结果就不包含终止索引本身的值
如下不包含end_index = 5位置上的值
>>> a [ : 5 : -1 ]
[9, 8, 7, 6]
这个案列是包含了终止索引位置的值,参照上条加入对比。
也就是说,指定了具体的终止索引位置,那么取值不包括这个位置上的值,如果没指定,默认终止索引就在端点处,那么取值包括该位置的值
// An highlighted block
>>> a [ 5: : -1]
[5, 4, 3, 2, 1, 0]
>>> #没有指定具体的终止索引位置,所以默认终止于端点处,
因此包含端点处的值,即0
四、进阶操作
1.修改某个元素值
直接将修改后的值带入进索引里面
// An highlighted block
>>> a [ 2 ] = [ 'A' ]
>>> print (a)
[0, 1, ['A'], 3, 4, 5, 6, 7, 8, 9]
#直接在需要修改的索引处赋值,将索引值 = 2的值修改为['A']
2.替换元素值
是从起始索引开始,包含起始索引本身的值,将数值插入,然后再将终止索引本身及以后的值,紧跟在插入数值后面就行了,不包含终止索引本身。下面以替代索引3和5之间的元素为案例分析
包含 “起始索引=3 ”的元素本身,不包含”终止索引 = 5“的元素本身,元素个数应该是2个。
(1)给定替换的元素个数 = 2
// An highlighted block
>>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> print (a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a [ 3: 5] = [ 'b', 'c']
>>> print (a)
[0, 1, 2, 'b', 'c', 5, 6, 7, 8, 9]
>>> #替代写法,将起始索引本身的值到终止索引前一个索引之间的值进行替换,
>终止索引本身的数值不替换
(2)给定替换的元素个数 > 2个
// An highlighted block
>>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> print (a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a [ 3: 5 ] = [ 'b', 'c', 'd', 'e']
>>> print (a)
[0, 1, 2, 'b', 'c', 'd', 'e', 5, 6, 7, 8, 9]
>>> #插入写法,从开始索引为3的地方带入插入值,带入插入数值后,
将索引值为5的值本身及其后面的值紧跟着排列在后就行
(3)给定替换的元素个数 < 2。
// An highlighted block
>>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> print (a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a [ 3: 5 ] = [ 'b' ]
>>> print (a)
[0, 1, 2, 'b', 5, 6, 7, 8, 9]
>>> # 替换了起始索引 = 3本身的值,
>终止索引=5及其以后的值都紧跟在插入值后面,
>索引=4处的值伴随着索引 = 3的值一起被替换掉了
3、插入元素值
切片这里,最困惑的就是没理解替换元素值、和插入元素值两者的区别,现在恍然大悟,替换的原理如上所述,接下来插入元素值其实很简单,只要保持,终止索引、起始索引是同一个值再进行赋值就可以了
(1)插入一个元素
// An highlighted block
>>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> print (a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a [6:6 ] = ['c', 'd', 'e', 'f','g']
>>> print (a)
[0, 1, 2, 3, 4, 'b', 'c', 'd', 'e', 'f', 'g', 5, 6, 7, 8, 9]
>>> #插入多个元素,其他原本的元素值和个数都不发生改变
(2)插入多个元素,甚至字符串
// An highlighted block
>>> a = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> print (a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a [ 3: 3] = [ 'hello , world!']
>>> print (a)
[0, 1, 2, 'hello , world!', 3, 4, 5, 6, 7, 8, 9]
4、选择切片位置
(1)取索引值为偶数的位置进行切片
// An highlighted block
>>> a = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> print(a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a [ : : 2]
[0, 2, 4, 6, 8]
>>> # 选取索引值为偶数的位置进行切片
(2)选取索引值为奇数的位置进行切片
// An highlighted block
>>> a = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> print(a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a [ 1: :2]
[1, 3, 5, 7, 9]
>>> # 选取索引值为奇数的位置进行切片
综上,就是今天学习python切片的小结,记录完成!
来源:https://blog.csdn.net/weixin_44162375/article/details/123589228


猜你喜欢
- 效果图实现代码vue2 代码如下<!-- 横向柱状图测试结果 --><template> <div
- 本文实例为大家分享了Python实现双人五子棋对局的具体代码,供大家参考,具体内容如下效果:自己需要两个棋子:服务器玩家全部代码:# 案列使
- 前言这里先说明一下,网上很多人说阿里规定500w数据就要分库分表。实际上,这个500w并不是定义死的,而是与MySQL的配置以及机器的硬件有
- Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python 的设计具有很强的可读性,相比其他语言经常使用英文
- 前言小程序跳一跳最近很火,之前爆出微信游戏小程序漏洞,网上也不乏大神。这里就用一大神的python脚本来刷下高分。 跳一跳python脚本传
- # 基础版,不依赖环境import timeimport base64import hashlibclass Token_hander():
- 函数的返回值一个函数执行后可以返回多个返回值def measure(): print('测量开始。。。。&
- 最近在学习正则,一些比较有用的东西怕忘记,记下来,比较乱,想一条记录一条:正则表达式在线测试//匹配文本,这个偶尔比较好用,但是要小心字符中
- 本文介绍了python OpenCV学习笔记实现二维直方图,分享给大家,具体如下:官方文档 – https://docs.opencv.or
- 保护你的ASP页面的两种办法 有时候你只想让人们从你的站点来访问你的某些页面, 而不允许他们从其它站点的非法链接中到达这些页面。在你想保护的
- Hello,Everyone!Python是个好东西!好吧,以黎某人这寒碜的赞美之词,实在上不了台面,望见谅。那我们直接来上干货吧。第一步:
- 前言:在最近做多智能车的控制时,绘制障碍物的时候发现障碍物的图层被路面图层所覆盖,一时不知道怎么解决,其实在用matplotlib.pypl
- 颜色的变化跟人类的智慧一样,是无穷的,每个阶段都会有流行的色彩,有属于一个时代的颜色!WEB2.0是一个概念,它宣扬,定位了一些东西,以用户
- 如下所示:两个时间相差一整天,结果却是相差时间为零 !!!!这里是使用错误, .seconds只会计算 小时分钟秒 部分之间的差值在这里使用
- 近期,我做了一个娱乐门户的投票系统,也是被刷票搞的焦头烂额,一切可用的方法都用了。但都不是太理想,最终,琢磨出来了下面的方法,我做成了流程图
- PHP Too few arguments to function的解决过去自定义函数的时候如果参数不足,则会抛出一个警告,但是在7.1开始
- 当我想要完美的使用:nth-child或者:nth-of-type的时候有点儿头晕。你越理解它们,就能写出越好的CSS规则!在这些简单的”秘
- 内容适应形式学习了死猫的文章,我今天也来说说有关内容和容器的关系。看标题你也许觉得有些囧,它和上一篇《形式追随内容?》看起来相反,而且好像从
- 一个美女面试官坐到我的对面,发光logo的MacBook也挡不住她那圆润可爱的脸庞。程序媛本就稀有,美女面试官更是难寻。这么温柔可爱的面试官
- 写在前面:前一段时间 kejun 给我们培训JavaScript的时候,在幻灯片上推荐了很多特别经典的文章,其中就有这一篇。读过之后感觉很不