上一篇文章: Python實用技法第9篇:從序列中移除重複項且保持元素間順序不變
下一篇文章: Python實用技法第11篇:找出序列中出現次數最多的元素
咱們的代碼已經變得沒法閱讀,處處都是硬編碼的切片索引,咱們想優化他們。
代碼中若是有不少硬編碼的索引值,將致使可讀性和維護性都不佳。segmentfault
內置的slice()函數會建立一個切片對象,能夠用在任何運行進行切片操做的地方。函數
items=[0,1,2,3,4,5,6] a=slice(2,4) print(items[2:4]) print(items[a]) items[a]=[10,11,12,13] print(items) del items[a] print(items[a]) print(items)
運行結果:優化
[2, 3] [2, 3] [0, 1, 10, 11, 12, 13, 4, 5, 6] [12, 13] [0, 1, 12, 13, 4, 5, 6]
若是有一個slice對象的實例s。能夠分別經過s.start、s.stop以及s.step屬性獲得關於該對象的信息。例如:編碼
items=[0,1,2,3,4,5,6] a=slice(2,8,3) print(items[a]) print(a.start) print(a.stop) print(a.step)
結果:code
[2, 5] 2 8 3
此外,能夠經過使用indices(size)方法將切片映射到特定大小的序列上。這會返回一個(start,stop,step)元組,全部的值都已經恰當地限制在邊界之內(當作索引操做時可避免出現IndexError異常),例如:對象
s='HelloWorld' a=slice(2,5) print(a.indices(len(s))) for i in range(*a.indices(len(s))): print(str(i)+":"+s[i])
結果:索引
(2, 5, 1) 2:l 3:l 4:o
上一篇文章: Python實用技法第9篇:從序列中移除重複項且保持元素間順序不變
下一篇文章: Python實用技法第11篇:找出序列中出現次數最多的元素