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方法宣告中的非必須引數,在這裡意指end與step根據語法可有可無。這樣算來分片的形式就多得多了,根據分片中引數的個數,可知總的分片情況共有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]
其實這也就是說在分片中僅有start和end且start <= 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 實際範圍...