先從原理上分析切片運算:
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 切片 Python 列表切片
想必很多人都使用過列表的切片,通過切片可以從列表中獲取乙個或多個元素,但你真的了解切片?一 一般玩法 name a b c d e f g h name 0 2 獲取 0 2 中間的元素,不包括索引為 2 的元素 a b name 2 從 0 開始切,可省略 0 a b name 1 同樣地,切到最...
pythonint切片 python 切片
切片 list取值的一種方式,在ist中取多個值時,就叫切片 lis list range 1,21 print lis print lis 0 11 print lis 0 11 2 print lis 1 lists 於萍 李夢 王春武 李丹利 for name in lists print n...
python 切片 關於Python切片問題!
在數學中,序列也被稱為數列,是指按照一定順序排序的一列數。在python中序列是最基本的資料結構。它是用於一塊用於存放多個值的連續記憶體空間。python內建了5個常用的序列結構。分別是列表 元組 字典 集合和字串。今天就來看一下這些序列結構的基本操作。序列的每乙個元素都有乙個編號,也被稱為索引,這...