Python 中序列的索引與分片

2021-07-25 18:31:15 字數 2690 閱讀 4061

python中常用的序列有列表(list),元組(tuple)與字串。對於python中的序列,可以使用索引來訪問其成員,得到的結果是單個元素。其形式為seq[index]。另外python中的索引可以使用負整數來表示,最後乙個元素使用負索引為 -1,向前依次遞減。  

>>>l =[1, 4, 7, 2, 5, 8, 3, 6, 9]

>>>l[0]

1>>>l[1]

4>>>l[-1]

9>>>l[-2]

6

python中序列的分片可用於訪問一批序列元素,得到的結果是個序列。其形式為seq[start:[end[:step]]]。這個寫法模仿自python方法宣告中的非必須引數,在這裡意指endstep根據語法可有可無。這樣算來分片的形式就多得多了,根據分片中引數的個數,可知總的分片情況共有3種可能。

>>>l =[1, 4, 7, 2, 5, 8, 3, 6, 9]

>>>l[0:]

[1, 4, 7, 2, 5, 8, 3, 6, 9]

>>>l[-1:]

[9]

>>>l = [1, 4, 7, 2, 5, 8, 3, 6, 9]

>>>l[0:2] # start < end

[1, 4]

>>>l[0:0] # start = end

>>>l[2:0] # start > end

上面的第

二、三種情況的結果倒也好理解,第二種情況是要取從索引 0 開始,而又不包括索引 0 的所有元素,明顯是取不到,所以結果為空。第三種情況就更好說了從索引 2 處開始,向後直到索引 0 處結束的所有元素,結果自然也是空。這兩種情況取不到元素,貌似用不到。其實不然,這兩種情形有個很有意思的用處。  

>>>l =[2, 5, 8]

>>>l[0:0] = [1, 4, 7]

>>>l

[1, 4, 7, 2, 5, 8]

>>>l[6:0] = [3, 6, 9]

>>>l

[1, 4, 7, 2, 5, 8, 3, 6, 9]

其實這也就是說在分片中僅有startendstart <= end的情況下,可以使用這種分片形式在原序列中從索引位置為start處開始插入乙個新的序列中的所有元素。舉個例子來說,list中的extend方法可以在列表尾部直接插入乙個序列中的所有元素。假如需要在在頭部也實現這樣的方法,則可以定義extendleft如下:

>>>def extendleft(seq, new_seq):

... seq[0:0] = new_seq

...>>>l = [2, 5, 8]

>>>l.extend([3, 6, 9])

>>>l

[2, 5, 8, 3, 6, 9]

>>>extendleft(l, [1, 4, 7])

>>>l

[1, 4, 7, 2, 5, 8, 3, 6, 9]

>>>l=[1, 4, 7, 2, 5, 8, 3, 6, 9]

>>>l[0:8

:2][1, 7, 5, 3]

>>>l[0:8

:-2]

>>>l[8:0

:-2]

[9, 3, 5, 7]

>>>l[8:0

:2]

這種情況下,step的正負性決定是向前還是向後取元素,step的絕對值大小決定了每隔幾位取乙個序列成員(step為1表示下乙個元素,2表示下下乙個元素,依次類推)。  

python中內建了slice類,它用於建立分片物件供序列使用。也就是說通過分片訪問序列元素,可以使用seq[s](s是乙個slice物件)。

slice類有兩種可用形式,分別為class slice(stop)class slice(start, stop[, step])

>>>l = [1, 4, 7, 2, 5, 8, 3, 6, 9]

>>>s = slice(3)

>>>s

slice(none, 3, none)

>>>l[s]

[1, 4, 7]

>>>s = slice(0, 8, 2)

>>>l[s]

[1, 7, 5, 3]

>>>l[0:8:2]

[1, 7, 5, 3]

Python筆記 序列(一)索引 分片

python包含6種內建序列 列表 元組 字串 unicode字串 buffer物件 xrange物件。這些序列支援通用的操作 索引是從0開始計數 當索引值為負數時,表示從最後乙個元素 從右到左 開始計數。這裡列舉幾個例子 字串字面值可以直接使用索引,不需要專門的變數引用 hello world 0...

Python索引和分片

python的應用廣泛,可以實現很多強大的功能,今天就給大家詳細介紹下python索引和分片。1 序列 序列是多個元素按照一定規則組成的物件,對於乙個有序序列,我們可以通過索引位置的方法訪問對應位置的值。2 索引 好比一本書目錄,利用目錄中的頁碼,可以快速的查詢所需要的內容,python使用中括號 ...

python分片的步長 Python的分片操作

在列表中有一種操作叫做分片 一般形式 l2 4,6,1,7,9 e l2 2 4 print e 該 執行結果如下 1,7 從下標來看可以很容易的知道下標二對應的正好是元素3,值1 但是,卻沒有下標4的元素5,值9 所以,我們得出乙個結論 python的分片操作含左不含右 操作範圍 m,n 實際範圍...