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 tempfile模块学习笔记(临时文件)
May 25 Python
低版本中Python除法运算小技巧
Apr 05 Python
Python中用于检查英文字母大写的isupper()方法
May 19 Python
ansible作为python模块库使用的方法实例
Jan 17 Python
python 3.6 tkinter+urllib+json实现火车车次信息查询功能
Dec 20 Python
python使用opencv驱动摄像头的方法
Aug 03 Python
Python3利用Dlib实现摄像头实时人脸检测和平铺显示示例
Feb 21 Python
python GUI库图形界面开发之PyQt5状态栏控件QStatusBar详细使用方法实例
Feb 28 Python
借助Paramiko通过Python实现linux远程登陆及sftp的操作
Mar 16 Python
30行Python代码实现高分辨率图像导航的方法
May 22 Python
基于Python的一个自动录入表格的小程序
Aug 05 Python
python超详细实现完整学生成绩管理系统
Mar 17 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
教你如何把一篇文章按要求分段
2006/10/09 PHP
如何使用Strace调试工具
2013/06/03 PHP
PHP响应post请求上传文件的方法
2015/12/17 PHP
浅析Yii2集成富文本编辑器redactor实例教程
2016/04/25 PHP
基于Swoole实现PHP与websocket聊天室
2016/08/03 PHP
Aster vs KG BO3 第二场2.18
2021/03/10 DOTA
JS定时器实例
2013/04/17 Javascript
JS动态创建Table,Tr,Td并赋值的具体实现
2013/07/05 Javascript
JQuery操作三大控件(下拉,单选,复选)的方法
2013/08/06 Javascript
Jquery uploadify图片上传插件无法上传的解决方法
2013/12/16 Javascript
JavaScript通过正则表达式实现表单验证电话号码
2014/03/07 Javascript
两种不同的方法实现js对checkbox进行全选和反选
2014/05/13 Javascript
vue-router路由简单案例介绍
2017/02/21 Javascript
Bootstrap导航简单实现代码
2017/03/06 Javascript
Vue.js实现文章评论和回复评论功能
2020/05/30 Javascript
Angular 1.x个人使用的经验小结
2017/07/19 Javascript
js实现ATM机存取款功能
2020/10/27 Javascript
JS实现排行榜文字向上滚动轮播效果
2019/11/26 Javascript
JS数组方法shift()、unshift()用法实例分析
2020/01/18 Javascript
[01:53]3.19 DOTA2发布会 现场精彩Coser表演
2014/03/25 DOTA
[40:55]Liquid vs LGD 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python抓取京东价格分析京东商品价格走势
2014/01/09 Python
详解Python实现按任意键继续/退出的功能
2016/08/19 Python
python中学习K-Means和图片压缩
2017/11/20 Python
python距离测量的方法
2018/03/06 Python
在python下读取并展示raw格式的图片实例
2019/01/24 Python
Python将列表中的元素转化为数字并排序的示例
2019/12/25 Python
keras实现多GPU或指定GPU的使用介绍
2020/06/17 Python
使用HTML5原生对话框元素并轻松创建模态框组件
2019/03/06 HTML / CSS
世界上最伟大的马产品:Equiderma
2020/01/07 全球购物
投标单位介绍信
2014/01/09 职场文书
家长对小学生的评语
2014/01/28 职场文书
民主生活会对照检查材料思想汇报
2014/09/27 职场文书
亮剑观后感300字
2015/06/05 职场文书
九年级数学教学反思
2016/02/17 职场文书
mysql查询结果实现多列拼接查询
2022/04/03 MySQL