1. 程式人生 > >python的slice切片操作

python的slice切片操作

記錄一下python的切片操作~~

a = [1,2,3,4,5,6,7,8]
#--------基礎操作----------
print(a[:]) #輸出全部序列  [1, 2, 3, 4, 5, 6, 7, 8]
print(a[:4]) #輸出第0-3號,不包括4  [1, 2, 3, 4]
print(a[:-1])#不包括最後一個  [1, 2, 3, 4, 5, 6, 7]
print(a[4:])#從第4號往後  [5, 6, 7, 8]
print(a[-4:])#從倒數第四個往後 [5, 6, 7, 8]
print(a[3:-3])  #[4, 5]

#---------兩個特殊用法-----------
print(a[-0:]) #這個要記住,得到原列表的一份拷貝 [1, 2, 3, 4, 5, 6, 7, 8] print(a[:]) #得到的也是源列表的一份拷貝 #---------高階操作----------- a[start:end:stride] #可以實現步進式切割,但是在單次切片操作內,不要同時指定start、end和stride,否則會使得程式碼可讀性變差,如果一定要配合使用的話,可以先做步進式切片,然後在切割結果中做二次切割。 print(a[::2]) #輸出偶數索引的值 [1, 3, 5, 7] print(a[1::2]) #輸出奇數索引的值 [2, 4, 6, 8]
print(a[::-1]) #採用-1做步進值,可以輸出a的反轉序列 [8, 7, 6, 5, 4, 3, 2, 1] print(a[::-2]) #從尾部開始,每隔兩個元素取一個 [8, 6, 4, 2]

python的多重迴圈寫法(很神奇啊有木有):

a = [[1,2,3],[4,5,6],[7,8,9]]
flat =[x for row in a for x in row]
print (flat) #[1, 2, 3, 4, 5, 6, 7, 8, 9]
squared = [[x**2 for x in row] for row in a]
print(squared)
#[[1, 4, 9], [16, 25, 36], [49, 64, 81]]