python切片詳解

2021-09-24 10:36:04 字數 1410 閱讀 2449

先從原理上分析切片運算:

list的切片,內部是呼叫__getitem__,__setitem__,__delitem__和slice函式。而slice函式又是和range()函式相關的。

給切片傳遞的鍵是乙個特殊的slice物件。該物件擁有可描述所請求切片方位的屬性,例如:

a = [ 1, 2, 3, 4, 5, 6 ]

x = a [ 1 : 5 ] #  x = a.__getitem__( slice ( 1, 5, none ) )

a [ 1 : 3 ] = [10, 11, 12 ]#  a.__setitem__( slice ( 1, 3, none ), [ 10, 11, 12 ] )

del a [ 1 : 4 ]#  a.__delitem__( slice ( 1, 4, none ) )

python 的切片功能實際上比很多程式設計師認為的更強大。

a = m [ 0 : 100 : 10 ]  #  帶步進的切片(步進值=10)

注意:步進值為step

當step > 0 時

切片從 start(含start)處開始,到end(不含end)處結束,**從左往右**,每隔(step-1)(索引之間的差仍為step,但相隔的元素是step-1個)個元素進行一次擷取。

這時,start 指向的位置應該在end指向的位置的左邊,否則返回值為空

當step < 0 時

切片從 start(含start)處開始,到end(不含end)處結束,**從右往左**,每隔(step-1)(索引之間的差仍為step,但相隔的元素是step-1個)個元素進行一次擷取。

這時,start 指向的位置應該在end指向的位置的右邊,否則返回值為空

有乙個經典應用是:翻轉字串

比如:>>> str='pythontab.com'

>>> str[::-1]

結果為:

'moc.batnohtyp'

切片邊界問題

例項:s=[1,2,3,4]       # s 上界為 0 下界為 4

s[-100:100]       #返回 [1,2,3,4] -100超出了上界,100超出了下界:等價於 s[0:4]

s[-100:-200]      #返回 -100,-200均超出了上界,自動取上界:等價於s[0:0]

s[100:200]        #返回 100,200均超出了下界,自動取下界值:等價於s[4:4]

s[:100]           #返回 [1,2,3,4] 開始值省略表示從第0個開始

s[0:]             #返回 [1,2,3,4] 結束值為空表示到最後乙個結束

注意:我使用的python版本為python2.7,python的切片存在版本相容問題。在python3中有更加高階的功能和用法,在使用時一定要注意自己的python版本。

python 切片詳解

定義乙個list list arr michael joker tracy list arr 0 3 michael joker tracy list arr 0 3 表示,從索引0開始取,直到索引3為止,擔不包括索引3。即索引0,1,2,正好是3個元素。如果第乙個索引是0,還可以省略 list a...

Python列表切片詳解

python切片是list的一項基本的功能,類似的 a list 10 python核心程式設計中文版 第二版 s abcdefgh s 1 可以視為翻轉操作 output hgfedcba s 2 output aceg 序列操作符 作用seq ind 獲取下標為ind的元素 seq ind1 i...

python中list切片詳解

python中list切片詳解 語法 start stop step step代表切片步長 切片區間為 start,stop 包含start但不包含stop 1.step 0,從左往右切片 2.step 0,從右往左切片 3.start stop step 為空值時的理解 start stop預設為...