取一個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的切片非常靈活,一行代碼就可以實作很多循環才能實作的功能。