Pyhon-列表切片操作

因爲時常用到切片,但是有的時候總是不會逆向返回,或者倒着輸出等,所以做下總結。

切片格式:[start:end:step]  三個位置的都可以省略,step默認爲1。

a = [1,2,3,4,5]
print(a[1:])       # [2,3,4,5]
print(a[:])        # [1,2,3,4,5]  (start,end) step 默認 
print(a[::])       # [1,2,3,4,5]  (start,end,step)均取默認值 
print(a[::-1])     # [5,4,3,2,1]  step=-1,從-1的位置開始,每次加-1輸出全部
print(a[-1:-3:-1]) # [5,4]        end=-3,取不到所以是 [-1,-2]位置的輸出
print(a[-1:-3])    # []           staet = -1 從右取值,step=1,從左開始取值,左右矛盾
                   #              未指定正確的索引
print(a[-1:])      # [5]          因爲-1是最後一個元素,應該是從最後一個開始取
                   #              但step=1,所以只返回了[5]
print(a[-1])       # 5            注意兩者不同 
print(a[1:-2])     # [2,3]        按照正序從index=1的位置開始切片,到index=-3的位置
                   #              上面的這個可以看成前後分別切片組合,到end的前一個是-3 而不是-1

在切片中從左往右是默認的,即step=1。當未指定開始位置時,從端點處開始。從左向右時,index=0。從右向左時,index=-1 or index = klen(list)-1。當start和end 與 step左右不相互矛盾時,返回正確切片,否則返回空列表。 

N*N 維度 (list其實沒有這麼說的,把它想成矩陣)

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

print(a[1:])       # [[6,7,8,9,0],[1,1,1,1,1]]
print(a[:])        # [[1,2,3,4,5],[6,7,8,9,0],[1,1,1,1,1]]
print(a[::])       # [[1,2,3,4,5],[6,7,8,9,0],[1,1,1,1,1]]
print(a[::-1])     # [[1,1,1,1,1],[6,7,8,9,0],[1,2,3,4,5]] 
print(a[-1:-3:-1]) # [[1,1,1,1,1],[6,7,8,9,0]]
print(a[-1:])      # []
print(a[-1])       # [1,1,1,1,1]
print(a[0:-1])     # [[1,2,3,4,5],[6,7,8,9,0]]

從上面例子可以看出,N*N維度的切片操作和1*N維度的效果是相同的,在N*N維度中,僅是將[ [list_1],[list_2],....,[list_N]]中的每個[list1]、[list2]、[list3]看作是一個1*N中的元素。當list中不在是list,而是其他結構如元組等,也是將一個元組當成一個整體做切片考慮。

寫完發現一篇寫的很好的博客(看不懂我的例子,可以看下面博客,比我寫的好):

https://www.jianshu.com/p/15715d6f4dad

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章