Python提供切片操作(slice),可以輕鬆的訪問序列中的某段子集元素。Python常見的數據元素list,str,和bytes均提供slice操作。同時切割操作可以通過__getitem__
和__setitem__
特殊方法實現。
切割的基本操作爲:
somList[start:end]
,表示的區間爲左閉右開區間,即[start,end)
注意:很多語言的區間都是左閉右開
1. 當start==0
或者end==序列長度
時,可以省略
a = ['a','b','c','d','e','f']
print(a[0:2])
print(a[:2])
print(a[2:len(a)]
print(a[2:])
2.在賦值時,對左側列表使用切割操作,會將該列表中處在指定範圍內的對象替換爲新值;如果左側切片沒有指定索引,那麼則會被右側列表替換掉(即使長度不同)
print('Before:',a)
a[2:5] = [2,3,4] #指定位置被修改
print('After:',a)
#################
b = a
a[:] = [2,3,4] # 被替換
assert a is b
print('After:',a)
3.如果在切割時,右側列表的起止索引未指定,那麼會產生一個原列表的拷貝
copy_list = a[:]
print(copy_list)
4.在同一切片操作中,不要同時使用start
、end
和stride
python提供someList[start:end:stride]
形式,實現步進切割,也就是說每隔stride步長取一個元素