切片
取一個list或tuple的部分元素是非常常見的操作。比如,一個list
L=[0,1,2,3,4,5,6,7,8,9]
取前3個元素,應該怎么做
笨方法,一個個列出來
>>> [L[0],L[1],L[2]] [0, 1, 2]
假如需要列出N個但是N很大
循環方法
>>> r=[] >>> n=3 >>> for i in range(n): ... r.append(L[i]) ... >>> r [0, 1, 2]
對於經常去指定索引范圍的操作,用循環十分繁瑣,因此pythone提供了切片操作符能大大簡化操作
>>> L[0:3] [0, 1, 2]
L[0:3]表示,從索引0開始,直到索引3,但是不包含索引3,及索引0,1,2 一共3個元素
如果第一個索引為0可以省略
>>> L[:3] [0, 1, 2]
也可以從索引1開始,取出2個元素來
>>> L[1:3] [1, 2]
類似也可以倒數切片,-1代表倒數第1個索引
>>> L[-2:] [8, 9] >>> L[-2:-1] [8]
默認取的間隔是1也可以定義,隔幾個去一個
從索引0取到索引9沒隔兩個取一個
>>> L[0:10:2] [0, 2, 4, 6, 8]
什么都不寫,只寫[:]就可以原樣復制一個list
>>> L[:] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
tuple也是一個list,唯一區別是tuple不可變.tuple切片也是一個tuple
>>> (0,1,2,3,4,5)[:3] (0, 1, 2)
字符串'xxx'也是可以看成是一種list,也可以切片返回的是一個字符
>>> 'abcde'[:3] 'abc'
切片函數slice
語法
class slice(stop) class slice(start, stop[, step])
參數說明
start--起始位置 默認為None stop--結束位置 自定義 step--間距 默認為None間距為1
>>> myslice=slice(3) >>> myslice slice(None, 3, None) >>> L[myslice] [0, 1, 2] >>> print(myslice.start) None >>> print(myslice.step) None >>> print(myslice.stop) 3
以上
myslice=(3) 等價於 myslice=slice(0,3,1)
自定義間隔step
#切片范圍為0-10 間距為2 >>> myslice=slice(0,10,2) #查看參數 >>> myslice slice(0, 10, 2) >>> L[myslice] [0, 2, 4, 6, 8]