切片
:在python原生list中的运用 通常一个切片操作要提供三个参数[start:stop:step]
start是切片的起始位置
stop是切片的结束位置(不包括)
step可以不提供,默认值是1,步长值不能为0,不然会报错。
ValueError: slice step cannot be zero
代码语言:javascript复制list=[1,2,3,4,5,6,7,8,9]
当step为正数时,以list[start]元素位置开始, step做为步长到list[stop_]元素位置(不包括)为止,从左向右截取。start和stop不论是正数还是负数索引还是混用都可以,但是要保证 list[stop]元素的【逻辑】位置,必须在list[start]元素的【逻辑】位置右边,否则取不出元素。
代码语言:javascript复制print(list[0:4])
[0, 1, 2, 3]
代码语言:javascript复制print(list[1:-1])
[1, 2, 3, 4, 5, 6, 7, 8]
代码语言:javascript复制print(list[-8:8])
[2, 3, 4, 5, 6, 7] 当 step 是负数时,以list[start]元素位置开始, step做为步长到list[stop]元素位置(不包括)为止,从右向左截取,要保证 list[stop]元素的【逻辑】位置
必须在list[start]元素的【逻辑】位置左边,否则取不出元素。
代码语言:javascript复制print(list[5:2:-1])
[5, 4, 3]
代码语言:javascript复制print(list[7:-7:-1])
[7, 6, 5, 4]
start和stop在符合虚拟的逻辑位置关系时,start和stop的绝对值是可以大于length的。
代码语言:javascript复制print(list[-12:5:2])
[0, 2, 4]
start和stop都是可以省略的,例如 list[:],被省略的默认由其对应左右边界起始元素开始截取。
代码语言:javascript复制print(list[:])
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
常用的切片操作
在某个位置插入元素
代码语言:javascript复制list[3:3] = "a"
print(list)
[0, 1, 2, 'a', 3, 4, 5, 6, 7, 8, 9]
代码语言:javascript复制list[5:5] = ["a","b"]
print(list)
[0, 1, 2, 3, 4, 'a', 'b', 5, 6, 7, 8, 9]