python

超轻量级php框架startmvc

Python cookbook(数据结构与算法)对切片命名清除索引的方法

更新时间:2020-05-24 12:42:02 作者:startmvc
本文实例讲述了Python对切片命名清除索引的方法。分享给大家供大家参考,具体如下:问题

本文实例讲述了Python对切片命名清除索引的方法。分享给大家供大家参考,具体如下:

问题:如何清理掉到处都是硬编码的切片索引

解决方案:对切片命名

假设有一些代码用来从字符串的固定位置中取出具体的数据(比如从一个平面文件或类似的格式:平面文件flat file是一种包含没有相对关系结构的记录文件):


########0123456789012345678901234567890123456789012345678901234567890123456789
record='....................100.......513.25..........'
cost=int(record[20:23])*float(record[30:36])

与其这样做,倒不如对切片进行命名:避免了使用许多神秘难懂的硬编码索引,代码变得清晰许多。


SHARES=slice(20,23) #对切片命名
PRICE=slice(30,36) #对切片命名
cost=int(record[SHARES])*float(record[PRICE])

一般来说,内置的slice()函数会创建一个切片对象,可以用在任何允许进行切片操作的地方。


>>> items=[0,1,2,3,4,5,6]
>>> a=slice(2,4)
>>> a
slice(2, 4, None)
>>> items[a]
[2, 3]
>>> items[2:4]
[2, 3]
>>> items[a]=[77,88]
>>> items
[0, 1, 77, 88, 4, 5, 6]
>>> del items[a]
>>> items
[0, 1, 4, 5, 6]
>>> 

如果有一个slice对象的实例s,可以分别通过s.starts.stop以及s.step属性来得到关于该对象的信息。


>>> items=[0,1,2,3,4,5,6]
>>> a=slice(2,4)
>>> a
slice(2, 4, None)
>>> a.start
2
>>> a.stop
4
>>> a.step
>>> b=slice(1,5,2)
>>> b
slice(1, 5, 2)
>>> b.start
1
>>> b.stop
5
>>> b.step
2
>>> 

另外,可以通过使用indices(size)方法将切片映射到特定大小的序列上。这会返回一个(start,stop,step)元组,所有的值都已经恰当地限制在边界以内(当做索引操作时可避免出现IndexError异常)


>>> items=[0,1,2,3,4,5,6]
>>> a=slice(2,4)
>>> a
slice(2, 4, None)
>>> a.start
2
>>> a.stop
4
>>> a.step
>>> b=slice(1,5,2)
>>> b
slice(1, 5, 2)
>>> b.start
1
>>> b.stop
5
>>> b.step
2
>>> s='HelloWorld'
>>> a.indices(len(s))
(2, 4, 1)
>>> b.indices(len(s))
(1, 5, 2)
>>> items[a]
[2, 3]
>>> items[b]
[1, 3]
>>> for i in range(*a.indices(len(s))):
 print(s[i])
l
l
>>> for i in range(*b.indices(len(s))):
 print(s[i])
e
l
>>> c=slice(0,8,2)
>>> c
slice(0, 8, 2)
>>> for i in range(*c.indices(len(s))):
 print(s[i])
H
l
o
o
>>> 

(代码摘自《Python Cookbook》)

Python cookbook 数据结构 算法 切片命名 清除索引
相关文章

Pandas-Cookbook 时间戳处理方式

Python cookbook(字符串与文本)在字符串的开头或结尾处进行文本匹配操作

Python cookbook(数据结构与算法)将多个映射合并为单个映射的方法

Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作示例

Python cookbook(数据结构与算法)从字典中提取子集的方法示例

Python cookbook(数据结构与算法)将名称映射到序列元素中的方法

Python cookbook(数据结构与算法)同时对数据做转换和换算处理操作示例

Python cookbook(数据结构与算法)找出序列中出现次数最多的元素算法示例

Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例

Python cookbook(数据结构与算法)实现对不原生支持比较操作的对象排序算法示例

Python cookbook(数据结构与算法)根据字段将记录分组操作示例

Python cookbook(数据结构与算法)筛选及提取序列中元素的方法

Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法

Python cookbook(数据结构与算法)对切片命名清除索引的方法

Python cookbook(数据结构与算法)将序列分解为单独变量的方法

Python cookbook(数据结构与算法)从任意长度的可迭代对象中分解元素操作示例

Python cookbook(数据结构与算法)保存最后N个元素的方法

Python cookbook(数据结构与算法)找到最大或最小的N个元素实现方法示例

Python cookbook(数据结构与算法)实现优先级队列的方法示例

Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法