切片python
取一個list或tuple的部分元素是很是常見的操做。好比,一個listapp
L=[0,1,2,3,4,5,6,7,8,9]
取前3個元素,應該怎麼作函數
笨方法,一個個列出來blog
>>> [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提供了切片操做符能大大簡化操做class
>>> 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]