天天看點

Python 2.5.1 切片

取一個list或者tuple的部分元素是一個非常常見的操作,比如一個list如下:

L =['Michael','Sarah','Tracy','Bob','Jack']

使用切片(slice)來取前3個元素就是:

>>>L(0:3)

['Michael','Sarah','Tracy']

L[0:3]表示,從索引0開始,直接索引到3為止,但是不包括3.即索引0,1,2。

如果索引0開始,還可以省略:

>>>L[:3]

也可以從1開始取,取出兩個元素:

>>>L[1:3]

['Sarah','Tracy']

類似的,Python支援L[-1]取倒數第一個元素,那麼它同樣支援倒數切片。試試:

>>>L[-2:]

['Bob','Jack']

記住倒數第一個元素的索引是-1.

切片操作十分有用,我們先建一個0-99的數列:

>>>L =list(range(100))

>>>L

[1,2,3,...99]

可以通過切片非常輕松取出某一段序列。比如前10個:

>>>L[:10]

[0,1,2,3,4,5,...9]

前10個數每兩個取一個:

>>>L[:10:2]

[0,2,4,...8]

所有的數每5個取一個。

>>>L[::5]

[0,5,10,15,...95]

甚至什麼都不寫

>>>L[:]

[1,2,3,..99]

tuple也是list一種,唯一的差別是tuple不可變。是以tuple也可以使用切片。隻是操作結果仍是tuple。

>>>(0,1,2,3,4,5)[:3]

(0,1,2)

字元串'xxx'也可以看作一種list,每個元素就是一個字元。是以,字元串也可以使用切片技術。隻是操作結果也是一個字元串:

>>>'ABCDEF'[:3]

'ABC'

在很多 程式設計語言中,針對字元串提供了各種截取函數,(例如substring),其實目的就是對字元串切片。Python中沒有針對字元串的截取函數,隻需要一個切片就可以了。非常簡單。

小結:

有了切片的操作,很多循環就不需要了。Python的切片非常靈活,一行代碼就可以實作很多循環才能實作的功能。