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]

  •  切片作为占位符不是一个空列表,可以实现替换,删除元素。

        替换元素是先将切片起始索引到末尾索引位置元素先删除,再将新元素插入。

         切片占位符可以带步长,从而实现连续跨越或删除的效果,需要注意的是,这种用法只能支持等长替换。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
乘风的头像乘风管理团队
上一篇 2023年9月13日
下一篇 2023年9月13日

相关推荐