python 切片简单灵活,因为灵活常常容易混淆。
本文整理了python 切片的所有的常见用法,并分门别类,方便读者借鉴参考。
文中所有用例是通过jupyter notebook测试的,原代码在github.
切片
模式[start:end:step]
读取
l = [1,2,3,4,5,6,7,8]
l[:] # 取全部元素
[1, 2, 3, 4, 5, 6, 7, 8]
l[::-1] # 逆序
[8, 7, 6, 5, 4, 3, 2, 1]
l[::2] # 取下标为偶数位的元素
[1, 3, 5, 7]
l[1::2] # 下标为奇数位
[2, 4, 6, 8]
l[2:4] # 下标为 [2,4)
[3, 4]
l[:3] # 取前3位,下标为 [0,3)
[1, 2, 3]
l[:100] # 超过数组长度时,尾部截断
[1, 2, 3, 4, 5, 6, 7, 8]
l[100:0] # 起始位置大于长度时,返回空list
[]
l[-3:] # 取后3位,下标为 [n-3,n)
[6, 7, 8]
l[3:] # 下标为 [3,n)
[4, 5, 6, 7, 8]
l[:-3] # 下标为 [0, n-3)
[1, 2, 3, 4, 5]
l[3] # 取下标为3的数
4
l[-3] #l[n-3]=l[5] #取下标为n-3的数
6
l[-1] # 最后一个数,即下标为n-1的数
8
l[2::3] # 每隔3取一个数
[3, 6]
for i in range(3):
print(l[i:i+3]) # 窗口式读取,每次读3个数,循环3次
[1, 2, 3]
[2, 3, 4]
[3, 4, 5]
修改
l[0] = 'a' #替换l[0]
l
['a', 2, 3, 4, 5, 6, 7, 8]
插入
l[3:3] = 'c' # 在l[3]处插入元素
l
['a', 2, 3, 'c', 4, 5, 6, 7, 8]
l[:0]= 'a' # 头部插入
l
['a', 'a', 2, 3, 'c', 4, 5, 6, 7, 8]
l[len(l):0]= 'x' # 尾部插入
l
['a', 'a', 2, 3, 'c', 4, 5, 6, 7, 8, 'x']
替换
l[:4] = ['e','f'] # 替换,前4位替换为2位
l
['e', 'f', 'c', 4, 5, 6, 7, 8, 'x']
l[-3:] = ['x','y','z'] # 最后3位替换为其他3位
l
['e', 'f', 'c', 4, 5, 6, 'x', 'y', 'z']
l[::2] = [0]*5 # 奇数为置0,间隔替换时,长度需要相等
l
[0, 'f', 0, 4, 0, 6, 0, 'y', 0]
删除
l[:2] = [] #删除前2位元素
l
[0, 4, 0, 6, 0, 'y', 0]
del l[:2] # 删除前2位元素
l
[0, 6, 0, 'y', 0]
del l[::2] # 删除奇数位元素
l
[6, 'y']