上一篇文章: 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篇:找出序列中出现次数最多的元素