slice 物件

PrivateRookie發表於2018-07-04

在 Python 中對序列進行切片非常常見,切片功能也非常好用。比如

# 取一個序列中的偶數項
seq = [1, 2, 3, 4, 5, 6]
seq[1::2]
>>> [2, 4, 6]

# 取第3到5個元素
seq = [1, 2, 3, 4, 5, 6]
seq[2:5]
>>> [3, 4, 5]

現在假如你有一個檔案,檔案中每行的特定位置記錄這一些資料,比如

#                             數量       價格
record = '....................100 .......513.25 ..........'

你現在想透過切片來提取資料獲得每行的總價,但這時候的程式碼會是這樣的

cost = int(record[20:23]) * float(record[31:37])

這樣硬編碼可能會讓你在兩週後再來看程式碼時不知道 record[20:23] 獲取的是什麼。這時可以藉助 Python 內建的 slice 函式來獲取一個切片物件,這個切片物件可以完成切片同時還具有名字,不用擔心程式碼難以閱讀。

SHARES = slice(20, 23)
PRICE = slice(31, 37)
cost = int(record[SHARES]) * float(record[PRICE])

slice 應該算是用得很少的內建函式了,但在處理某些文字和資料的時候還是很有用的。
例子來自 《Python Cookbook》。

另見:funtools.islice

本作品採用《CC 協議》,轉載必須註明作者和本文連結
多少事,從來急。天地轉,光陰迫。

相關文章