为什么python的切片到底是什么意思

2024-12-04 10:34:10
推荐回答(3个)
回答1:

这样解释吧some_iterabel[a:b:c]
a是起始,b是结束,c时一步走多少
a[-1:-4:-1]是-1开始-4结束,一步走-1
先定范围,-1到-4就是654,一步走-1,就是倒着走,所以就是654不变。
有趣的是a[-1:-4:1]
范围还是654不过自相矛盾了,因为是从后往前算的,你又让他正着走,自然没有东西啊

回答2:

我是这样理解的:
L= []
for i in range(-1,-4,-1):
L.append(A[i])
#
print(list(range(-1,-4,1))) # [] 不在一个序列中

回答3:

首先列表s[i:j:k]的概念说一下,i为起始位置,j为结束位置,k为步长。
如果i或j为正,表示从左边的位置开始,即从索引0开始,例如:s = '123.456',s[0:2] == '12'。
如果i或j为负,则表示从末尾的位置开始,即len(s)+i或len(s)+j的值,例如:s[-3:-1] == '45'。
从i到j的s切片定义为以k为步长的序列,其中i<=ks从i到j步长为k的切片定义为第i+n*k项序列,其中0<=n<(j-i)/k。即索引是i、i+k、i+2*k、i+3*k等等,当到达j时停止(但不包括j)。如果k省略,默认1。
当k为正时,如果i和j的值大于len(s),则它们将减为len(s)。
当k为负时,如果i和j的值大于len(s),则它们将被减为len(s)-1。
第一个,k为-1,步长负数是从右向左依次递减输出,所以654。
第二个,起始位置i是-1,即6,步长1为正数,向右依次输出,不可能到达左边的-4位置,所以为空。