Python对切片命名的实现方法


Posted in Python onOctober 16, 2018

1、需求

我们的代码已经变得无法阅读,到处都是硬编码的切片索引,我们想优化他们。

2、解决方案

代码中如果有很多硬编码的索引值,将导致可读性和维护性都不佳。

内置的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)

结果:

[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 相关文章推荐
Python发送email的3种方法
Apr 28 Python
搞笑的程序猿:看看你是哪种Python程序员
Jun 12 Python
Python使用设计模式中的责任链模式与迭代器模式的示例
Mar 02 Python
python Django批量导入不重复数据
Mar 25 Python
Python 多线程Threading初学教程
Aug 22 Python
解决Spyder中图片显示太小的问题
Apr 27 Python
对pycharm 修改程序运行所需内存详解
Dec 03 Python
python接口自动化(十六)--参数关联接口后传(详解)
Apr 16 Python
Python Selenium 之数据驱动测试的实现
Aug 01 Python
Django上线部署之IIS的配置方法
Aug 22 Python
python实现将range()函数生成的数字存储在一个列表中
Apr 02 Python
matplotlib之pyplot模块之标题(title()和suptitle())
Feb 22 Python
Python 给某个文件名添加时间戳的方法
Oct 16 #Python
解决python os.mkdir创建目录失败的问题
Oct 16 #Python
python连接mongodb密码认证实例
Oct 16 #Python
Python使用gRPC传输协议教程
Oct 16 #Python
python使用epoll实现服务端的方法
Oct 16 #Python
Python 访问限制 private public的详细介绍
Oct 16 #Python
对django中render()与render_to_response()的区别详解
Oct 16 #Python
You might like
如何开始收听短波广播
2021/03/01 无线电
SONY SRF-40W电路分析
2021/03/02 无线电
最省空间的计数器
2006/10/09 PHP
PHP使用feof()函数读文件的方法
2014/11/07 PHP
windows中为php安装mongodb与memcache
2015/01/06 PHP
PHP PDOStatement::fetch讲解
2019/01/31 PHP
php 使用 __call实现重载功能示例
2019/11/18 PHP
jQuery 鼠标经过(hover)事件的延时处理示例
2014/04/14 Javascript
js使用递归解析xml
2014/12/12 Javascript
JS简单实现多级Select联动菜单效果代码
2015/09/06 Javascript
JS 日期与时间戮相互转化的简单实例
2016/06/22 Javascript
Node.js connect ECONNREFUSED错误解决办法
2016/09/15 Javascript
JS实现的验证身份证及获取地区功能示例
2017/01/16 Javascript
如何在 Vue.js 中使用第三方js库
2017/04/25 Javascript
jQuery Validate 校验多个相同name的方法
2017/05/18 jQuery
Jquery和CSS实现选择框重置按钮功能
2018/11/08 jQuery
Node.js Buffer模块功能及常用方法实例分析
2019/01/05 Javascript
React+Antd+Redux实现待办事件的方法
2019/03/14 Javascript
jQuery实现弹出层效果
2019/12/10 jQuery
操作Windows注册表的简单的Python程序制作教程
2015/04/07 Python
Python操作使用MySQL数据库的实例代码
2017/05/25 Python
Python3实现发送QQ邮件功能(附件)
2020/12/23 Python
python模式 工厂模式原理及实例详解
2020/02/11 Python
Python写出新冠状病毒确诊人数地图的方法
2020/02/12 Python
解析pip安装第三方库但PyCharm中却无法识别的问题及PyCharm安装第三方库的方法教程
2020/03/10 Python
Django中的AutoField字段使用
2020/05/18 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
2020/10/22 Python
一套中级Java程序员笔试题
2015/01/14 面试题
会计学财务管理专业个人的自我评价
2013/10/19 职场文书
后进生转化工作制度
2014/01/17 职场文书
重阳节活动总结
2014/08/27 职场文书
群众路线专项整治工作情况报告
2014/10/28 职场文书
民事申诉状范本
2015/05/20 职场文书
小学六一儿童节活动开幕词
2016/03/04 职场文书
2016年九九重阳节活动总结
2016/04/01 职场文书
python 爬取吉首大学网站成绩单
2021/06/02 Python