python中的切片
目录
众所周知,我们可以通过索引来查找序列类型(字符串,列表,元组...)中的单个元素。而切片是一种截取索引片段的技术,借助切片技术,我们可以十分灵活的处理序列类型的对象。
切片并非列表的专属操作,但是因为列表最具代表性,下面主要以列表来举例。
一.切片的基础用法
切片的书写形式:[i : i + n : m]。
其中i为切片的起始索引,为列表首位时可以忽略。i + n是列表的结束位置,为列表末位时可以忽略。索引范围为[i, i+n),m可以不提供,默认值时1,不允许为0。当m为负数时,列表翻转。
注意:这些值都可以大于列表的长度,不会报越界。但是会发生截断,就是仍然按照范围查找,但是超出序列数据范围部分,全部被遐想成空值,最终获取到空值进行忽略即可。
- 表示整个列表
- 步长为正,从列表前往后计算步长。
- 当步长为负数,是从列表后往前计算步长。注意范围索引的最小值和最大值也需要倒转。
-
切片的步长不能为0
- 按照步长方向(正数正序,负数倒序),当索引范围最大值小于最小值时,返回的片段为空。
二.切片是一个伪独立的对象
切片的返回结果是一个新的独立的序列。以列表为例,列表切片后得到的还是一个新的列表,占用新的内存地址。
但是切片只是浅拷贝,它拷贝的是原列表中的引用,所以当存在可变长对象时,新列表受制于原列表。不是可变长对象,拷贝的是值,是可变长列表,是该可变元素的引用,共用一个空间。
三.切片可作为占位符
切片可以作为独立对象被取出原序列,也可以留在原序列,作为一种占位符。
- 切片作为占位符是一个空列表,可以实现列表拼接的作用。
arr[1,2,3,4]#x下面表示的都是一个空列表arr[0:0]==arr[len(arr):]==len[X:X]
- 切片作为占位符不是一个空列表,可以实现替换,删除元素。
替换元素是先将切片起始索引到末尾索引位置元素先删除,再将新元素插入。
切片占位符可以带步长,从而实现连续跨越或删除的效果,需要注意的是,这种用法只能支持等长替换。
来源地址:https://blog.csdn.net/weixin_57023347/article/details/131419408
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341