目录
一.切片的基础用法
二.切片是一个伪独立的对象
三.切片可作为占位符
众所周知,我们可以通过索引来查找序列类型(字符串,列表,元组...)中的单个元素。而切片是一种截取索引片段的技术,借助切片技术,我们可以十分灵活的处理序列类型的对象。
切片并非列表的专属操作,但是因为列表最具代表性,下面主要以列表来举例。
切片的书写形式:[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]
替换元素是先将切片起始索引到末尾索引位置元素先删除,再将新元素插入。
切片占位符可以带步长,从而实现连续跨越或删除的效果,需要注意的是,这种用法只能支持等长替换。