Discuss / Python / 切片的总结

切片的总结

Topic source

Snowood123

#1 Created at ... [Delete] [Delete and Lock User]
>>> L
[0, 1, 2, 3, 4]
>>> L[0:1:1]

python在根据切片规则进行遍历时, 先判断[0:1:1]中的最后一位是否为负(默认为正)先不判断数值, 如果为负,则倒序遍历, 如果为正,则顺序遍历, 遍历方向只与这个有关。 然后判断前两位的数值找出范围,

>>> L[-3:-1:1]
[2, 3]
>>> L[2:-1:1]
[2, 3]
>>> L[-1:2:1]
[]

[-3,-1,1],先将前两位转成正[2,4,1], [2,-1,1] ---> [2,4,1] 正确 [-1,2,1] ---> [5,2,1] 错误!! 当最后一位为正时,第一位肯定比第二位小

>>> L[-1:-5:-1]
[4, 3, 2, 1]
>>> L[2:-1:-1]
[]
>>> L[-1:2:-1]
[4, 3]

[-1,-5,-1] ---> [2,4,-1] 正确 [2,-1,-1] ---> [2,5,-1] 错误!! [-1,2,-1] ---> [5,2,-1] 正确 当最后一位为负时,第一位肯定比第二位大

最后根据最后一位的数值去判断每次遍历的时候中间相差几个

另外当

>>> L[7:2:-1]
[4, 3]

当范围数值大于长度时,自动把list的边界当作遍历的边界

十分感谢!

在L中,-1(倒数第一个)对应的是顺数的第4个,而不是第5个 即L[-1] == L[4]。

还Zi

#3 Created at ... [Delete] [Delete and Lock User]

[-1,-5,-1] ---> [2,4,-1]按这样理解应该是 [-1,-5,-1] ---> [5,0,-1]才对吧。。

还Zi

#4 Created at ... [Delete] [Delete and Lock User]

[-1,-5,-1] ---> [4,0,-1]。。4打成5了。。

易苏杭

#5 Created at ... [Delete] [Delete and Lock User]

赞一个!!!~

还是不太理解这个L[-1:2:-1]

正常顺序时候是这样: -4 -3 -2 -1 0 1 2 3 4 1 2 3 4 0 1 2 3 4 那么对应的倒序-1时候就应该是这样的: -4 -3 -2 -1 0 1 2 3 4 4 3 2 1 0 4 3 2 1 那么从-1到2则会取到这几个数字:0 4 1 可是输出的却是4 3 这个怎么理解呢?

我的理解是L[-1:2:-1],先是最后一位是-1所以是倒序,再看前面两个数字,-1代表的是4,2代表的是2,所以倒序从4到2(不包括2),中间差值为1,所以结果为4,3

i骐骏

#8 Created at ... [Delete] [Delete and Lock User]

是不是可以这样理解:[x:y:z] x,y负责截出list或tuple中的‘子串’,最后一位负责输出时的顺序,整数时和原来顺序相同,负数时和原来顺序相反


  • 1

Reply