python中切片操作的详细用法
在Python中,切片操作是用于从序列(例如字符串、列表、元组等)中提取子序列的一种灵活且常见的方式。切片的基本语法是 start:stop:step,其中:
start: 起始索引,表示切片开始的位置。默认为序列的开头(索引0)。
stop: 结束索引,表示切片结束的位置。注意,实际取到的是索引值为 stop-1 的元素。默认为序列的末尾。
step: 步长,表示从起始索引到结束索引的间隔。默认为1。使用负数表示逆向遍历。
下面是一些常见用法的例子:
1 基本切片:
sequence[start:stop]
提取从 start 到 stop-1 的子序列。
2 带步长的切片:
sequence[start:stop:step]
提取从 start 到 stop-1 的子序列,以 step 为步长。
3 省略起始或结束索引:
sequence[:stop] # 从开头到 stop-1
sequence[start:] # 从 start 到末尾
如果省略 start
,表示从序列的开头开始;如果省略 stop
,表示直到序列的末尾。
4 逆向遍历:
sequence[::-1] # 逆向遍历整个序列
切片操作适用于字符串、列表、元组等序列类型。在实际应用中,切片非常方便,可以用于提取子序列、反转序列、跳跃性遍历等多种操作。
样例
你的代码中,sub_list 试图通过切片从 my_list 中创建一个子列表,但在切片索引上有一个错误。让我们来分析一下:
1 my_list = [1, 2, 3, 4, 5] 2 sub_list = my_list[-3:-3] 3 print(sub_list)
输出:[]
这里,my_list[-3:-3] 尝试从索引为 -3 的元素开始,到索引为 -3 的元素结束(意思就是说不包括这个位置所在的元素),但这个范围是空的,因为它不包含任何元素。
如果你想要获取从倒数第三个元素开始一直到列表末尾的子列表,你应该省略第二个索引:
my_list = [1, 2, 3, 4, 5]
sub_list = my_list[-3:-1:2]
print(sub_list)
输出:[3]
从倒数第三个到倒数第一个(不包括这个 是指在这个地方结束)但是步长是2所以就只能输出3
如果我们还是这段代码但是把步长设置为-1,而由于-3到-1是正向的而设置的步长-1是逆向的所以输出的就是空的
my_list = [1, 2, 3, 4, 5]
sub_list = my_list[1:-1:1]
print(sub_list)
输出:[2, 3, 4]
对于左边来说索引相当于是从0开始的 也就是说第0个是1,第一个就是2,-1代表的是5但是不包括它,同时步长又是1所以输出此