1、需求
我們的代碼已經(jīng)變得無法閱讀,到處都是硬編碼的切片索引,我們想優(yōu)化他們。
2、解決方案
代碼中如果有很多硬編碼的索引值,將導(dǎo)致可讀性和維護(hù)性都不佳。
內(nèi)置的slice()函數(shù)會創(chuàng)建一個切片對象,可以用在任何運行進(jìn)行切片操作的地方。
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)
運行結(jié)果:
[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屬性得到關(guān)于該對象的信息。例如:
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)
結(jié)果:
[2, 5]283
此外,可以通過使用indices(size)方法將切片映射到特定大小的序列上。這會返回一個(start,stop,step)元組,所有的值都已經(jīng)恰當(dāng)?shù)叵拗圃谶吔缫詢?nèi)(當(dāng)做索引操作時可避免出現(xiàn)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])
結(jié)果:
(2, 5, 1)2:l3:l4:o
新聞熱點
疑難解答