python数组切片

Python数组list分片

参数解释

list[start:end:stride]

end的结束点是按切片的方向在下标为end的元素的前一个

如果stride>0,start<=结果<end(切片方向由左往右,end的元素的前一个即<end)

如果stride<0,end<结果<=start(切片方向由右往左,end的元素的前一个即>end)

start/end代表下标而不是第几个

对原列表进行切割之后,会产生另外一份全新的列表。系统依然维护着指向原列表中各个对象的引用。在切割后得到的新列表上进行修改,不会影响原列表

快速分片

样例:

[79, 3, 56, 97, 65, 29, 86, 93, 56, 45]

79 3 56 97 65 29 86 93 45 45
0 1 2 3 4 5 6 7 8 9
-10 -9 -8 -7 -6 -5 -4 -3 -2 -1

全部

a[:]/a[::]

a
Out[94]: [79, 3, 56, 97, 65, 29, 86, 93, 56, 45]
a[:]
Out[95]: [79, 3, 56, 97, 65, 29, 86, 93, 56, 45]
a[::]
Out[96]: [79, 3, 56, 97, 65, 29, 86, 93, 56, 45]

前面n个

a[:n]/a[:n:]

a
Out[88]: [79, 3, 56, 97, 65, 29, 86, 93, 56, 45]
a[:3]
Out[89]: [79, 3, 56]
a[:3:]
Out[90]: [79, 3, 56]

最后n个

a[-n:]/a[-n::]/a[len(a)-n]

a
Out[82]: [79, 3, 56, 97, 65, 29, 86, 93, 56, 45]
a[-4:]
Out[73]: [86, 93, 56, 45]
a[-4::]
Out[80]: [86, 93, 56, 45]
a[len(a)-4:]
Out[106]: [86, 93, 56, 45]

反转

a[::-1]

a
Out[82]: [79, 3, 56, 97, 65, 29, 86, 93, 56, 45]
a[::-1]
Out[81]: [45, 56, 93, 86, 29, 65, 97, 56, 3, 79]

除后面n个以外的元素

a[:-1]

a
Out[97]: [79, 3, 56, 97, 65, 29, 86, 93, 56, 45]
a[:-1]
Out[98]: [79, 3, 56, 97, 65, 29, 86, 93, 56]

从尾部开始,向前以固定间隔stride取值

a[::-stride]

a
Out[130]: [79, 3, 56, 97, 65, 29, 86, 93, 56, 45]
a[::-2]
Out[131]: [45, 93, 29, 97, 3]

分组切片

for i in range(0,len(lst),num):
        print lst[i:i+num]

注意事项

元素越界

切割列表时,即便start或者end索引越界不会出现问题

a
Out[97]: [79, 3, 56, 97, 65, 29, 86, 93, 56, 45]
a[-11:]
Out[108]: [79, 3, 56, 97, 65, 29, 86, 93, 56, 45]
a[-11:20]
Out[109]: [79, 3, 56, 97, 65, 29, 86, 93, 56, 45]

a[-0:]

含义:原列表的一份拷贝

a
Out[97]: [79, 3, 56, 97, 65, 29, 86, 93, 56, 45]
b = a
a is b
Out[112]: True
b = a[-0:]
a is b
Out[114]: False

a[2:6]=[1, 2]

与元组的赋值不同(a, b = [5, 6]),切片的长度无需新值的个数相等。位于切片范围之前及之后的那些值都保留不变,列表会自动扩张或收缩

a
Out[115]: [79, 3, 56, 97, 65, 29, 86, 93, 56, 45]
a[2:6]=[1, 2]
a
Out[117]: [79, 3, 1, 2, 86, 93, 56, 45]

start比end早出现原则

在使用stride问题中,一定要遵守start比end早出现原则。

a
Out[142]: [79, 3, 56, 97, 65, 29, 86, 93, 56, 45]
a[10:0:2]
Out[143]: []
a[-3:-5:2]
Out[147]: []

本文作者:朝圣

本文链接:www.zh-noone.cn/2020/7/python数组切片

版权声明:本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0许可协议。转载请注明出处!

flask部署apscheduler方案
0 条评论