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


Posted in Python onMarch 13, 2018

本文实例讲述了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程序设计有所帮助。

Python 相关文章推荐
python实现批量转换文件编码(批转换编码示例)
Jan 23 Python
python中List的sort方法指南
Sep 01 Python
Python中使用tarfile压缩、解压tar归档文件示例
Apr 05 Python
在Django中创建第一个静态视图
Jul 15 Python
PyQt5打开文件对话框QFileDialog实例代码
Feb 07 Python
Python解决八皇后问题示例
Apr 22 Python
python通过配置文件共享全局变量的实例
Jan 11 Python
搞定这套Python爬虫面试题(面试会so easy)
Apr 03 Python
Python如何通过Flask-Mail发送电子邮件
Jan 29 Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
Mar 02 Python
Python导入模块包原理及相关注意事项
Mar 25 Python
再谈python_tkinter弹出对话框创建
Mar 20 Python
Django使用Celery异步任务队列的使用
Mar 13 #Python
特征脸(Eigenface)理论基础之PCA主成分分析法
Mar 13 #Python
python Celery定时任务的示例
Mar 13 #Python
人脸识别经典算法一 特征脸方法(Eigenface)
Mar 13 #Python
Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法
Mar 13 #Python
Python+Django搭建自己的blog网站
Mar 13 #Python
python实现人脸识别经典算法(一) 特征脸法
Mar 13 #Python
You might like
PHP 多维数组的排序问题 根据二维数组中某个项排序
2011/11/09 PHP
PHP中空字符串介绍0、null、empty和false之间的关系
2012/09/25 PHP
php使用Jpgraph绘制复杂X-Y坐标图的方法
2015/06/10 PHP
PHP文件上传操作实例详解
2016/09/27 PHP
PHP编程计算两个时间段是否有交集的实现方法(不算边界重叠)
2017/05/30 PHP
如何在Mozilla Gecko 用Javascript加载XSL
2007/01/09 Javascript
javascript new一个对象的实质
2010/01/07 Javascript
JQuery live函数
2010/12/24 Javascript
jQuery实现公告文字左右滚动的实例代码
2013/10/29 Javascript
javascript对话框使用方法(警告框 javascript确认框 提示框)
2014/01/07 Javascript
jquery中添加属性和删除属性
2015/06/03 Javascript
JavaScript实现提交模式窗口后刷新父窗口数据的方法
2017/06/16 Javascript
关于meta viewport中target-densitydpi属性详解(推荐)
2017/08/18 Javascript
vue2组件之select2调用的示例代码
2017/10/12 Javascript
vue2.0 下拉框默认标题设置方法
2018/08/22 Javascript
Angular4 Select选择改变事件的方法
2018/10/09 Javascript
elementUI Tree 树形控件的官方使用文档
2019/04/25 Javascript
vue使用localStorage保存登录信息 适用于移动端、PC端
2019/05/27 Javascript
解决vue bus.$emit触发第一次$on监听不到问题
2020/07/28 Javascript
Python3里的super()和__class__使用介绍
2015/04/23 Python
python 打印出所有的对象/模块的属性(实例代码)
2016/09/11 Python
Python 爬虫学习笔记之正则表达式
2016/09/21 Python
python实现守护进程、守护线程、守护非守护并行
2018/05/05 Python
解决pycharm工程启动卡住没反应的问题
2019/01/19 Python
Python3中exp()函数用法分析
2019/02/19 Python
python3下载抖音视频的完整代码
2019/06/05 Python
布隆过滤器的概述及Python实现方法
2019/12/08 Python
CSS的background属性及CSS3的背景图片设置总结
2016/06/13 HTML / CSS
YSL圣罗兰美妆官方旗舰店:购买YSL口红
2018/04/16 全球购物
美国最大的在线寄售和旧货店:Swap.com
2018/08/27 全球购物
司机职责范本
2014/03/08 职场文书
人民调解员培训方案
2014/06/05 职场文书
2014初中数学教研组工作总结
2014/12/19 职场文书
2015年五一劳动节慰问信
2015/03/23 职场文书
2016应届毕业生就业指导课心得体会
2016/01/15 职场文书
js基于div丝滑实现贝塞尔曲线
2022/09/23 Javascript