乙個眾所周知的秘密是,我們還可以用s[a:b:c]
的形式對s
在a
和b
之間以c
為間隔取值。
c
的值還可以為負,負值意味著反向取值。
ls = [10, 20, 30, 40, 50, 60, 70]
# 從頭開始取3個
print(ls[:3]) # [10, 20, 30]
# 從第4個到最後乙個
print(ls[3:]) # [40, 50, 60, 70]
# 根據步長切片, 從0個開始,每+3取1次
print(ls[::3]) # [10, 40, 70]
# 反向取值
print(ls[::-1]) # 排序反轉 [70, 60, 50, 40, 30, 20, 10]
print(ls[:3:-1]) # 倒著取3個 [70, 60, 50]
如果把切片放在賦值語句的左邊,或把它作為del
操作的物件,我們就可以對序列進行嫁接、切除或就地修改操作。
li = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 切片賦值的值必須是可迭代物件,且右側元素數量少於左側切片數的話,少的位置會被刪掉
# 左側4個切片數,右側只有2個元素,願意元素的下標為4、5的被刪掉,2、3被替換
li[2:6] = [30, 40]
print(li) # [1, 2, 30, 40, 7, 8, 9, 10]
# 刪除切片
del li[:2] # 刪除前2個元素
print(li) # [20, 30, 7, 8, 9, 10]
第2章 序列構成的陣列 元組 元組拆包 具名元組
拆包可以應用到任何可迭代物件上 str list等 唯一的硬性要求是,被可迭代物件中的元素數量必須要跟接受這些元素的元組的空檔數一致。除非我們用 來表示忽略多餘的元素 平行賦值拆包 完全拆包,左側變數必須和元組元素數量一致 平行賦值 city,year,pop,chg,area tokyo 2003...
FluentPython 2 序列構成的陣列
python 用統一的風格去處理序列資料。不管是哪種資料結構,字串 列表 位元組序列 陣列 xml 元素,抑或是資料庫查詢結果,它們都共用一套豐富的操作 迭代 切片 排序,還有拼接。python 標準庫用 c 實現了豐富的序列型別,列舉如下。序列型別還能按照能否被修改來分類。下圖顯示了可變序列 mu...
第二章(提煉) 序列構成的陣列(三)
python 程式設計師會預設序列是支援 和 操作的。通常 號兩側的序列由相同型別的資料所構成,在拼接的過程中,兩個被操作的序列都不會被修改,python 會新建乙個包含同樣型別資料的序列來作為拼接的結果。如果想要把乙個序列複製幾份然後再拼接起來,更快捷的做法是把這個序列乘以乙個整數。和 都遵循這個...