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篇:找出序列中出现次数最多的元素
相关文章
相关标签/搜索