你的程序已经出现一大堆无法直视的硬编码切片下标,然后你想清理下代码 。问题描述你的程序已经出现一大堆无法直视的硬编码切片下标,然后你想清理下代码 。
解决方案假定你有一段代码要从一个记录字符串中固定位置提取出特定的数据字段:
record = '....................100 .......513.25 ..........'cost = int(record[20:23]) * float(record[31:37])其实可以使用命名切片,避免出现大量无法理解的硬编码下标,可以使代码更加清晰可读 。
SHARES = slice(20, 23)PRICE = slice(31, 37)cost = int(record[SHARES]) * float(record[PRICE])讨论一般来讲,代码中如果出现大量的硬编码下标会使得代码可读性和可维护性大大下降 。命名切片是一个很好的方法让你更清楚的表达代码想要做什么 。
【1.11 命名切片】内置的函数slice()函数创建了一个切片对象,可以被使用在任何切片允许使用的地方 。比如:
items = [0, 1, 2, 3, 4, 5, 6]a = slice(2, 4)items[2:4]# [2, 3]items[a]# [2, 3]items[a] = [10, 11]# items = [0, 1, 10, 11, 4, 5, 6]del items[a]# item = [0, 1, 4, 5, 6]如果你有一个切片对象a,你可以分别调用它的a.start,a.stop,a.step属性来获取更多的信息 。比如:
a = slice(5, 50, 2)a.start# 5a.stop# 50a.step# 2另外,你还能通过调用切片的indices(size)方法将它映射到一个确定大小的序列上,这个方法返回一个三元组(start, stop, step),所有值都会被合适的缩小以满足边界限制,从而避免出现IndexError异常 。比如:
s = 'HelloWorld'a = slice(5, 10, 2)d = a.indices(len(s))"""d = (5, 10, 2)"""for i in range(*d):print(s[i])"""输出结果Wrd"""
- 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
