天天看點

Python語言中對list、tuple的切片操作

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

取指定索引範圍的操作,用循環十分繁瑣,是以,Python提供了切片(Slice)操作符,能大大簡化這種操作。

取前3個元素,用一行代碼就可以完成切片:

>>> L[0:3]
['Michael', 'Sarah', 'Tracy']
           

L[0:3]表示,從索引0開始取,直到索引3為止,但不包括索引3。即索引0,1,2,正好是3個元素。

如果第一個索引是0,還可以省略:

>>> L[:3]
['Michael', 'Sarah', 'Tracy']
           

也可以從索引1開始,取出2個元素出來:

>>> L[1:3]
['Sarah', 'Tracy']
           

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

>>> L[-2:]
['Bob', 'Jack']
>>> L[-2:-1]
['Bob']
           

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

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

**# _*_ coding: utf-8 _*_
l=list(range(1000))
print(l)
print(l[1:100])
print (l[0:1])
**
           

甚至什麼都不寫,隻寫[:]就可以原樣複制一個list:

>>> L[:]
[0, 1, 2, 3, ..., 999]
           

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

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

字元串’xxx’也可以看成是一種list,每個元素就是一個字元。是以,字元串也可以用切片操作,隻是操作結果仍是字元串:

>>> 'ABCDEFG'[:3]
'ABC'
>>> 'ABCDEFG'[::2]
'ACEG'
           

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

Py