Python實用技法第10篇:對切片命名

上一篇文章: 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篇:找出序列中出現次數最多的元素
相關文章
相關標籤/搜索