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局部赋值的规则
Mar 07 Python
在Django中创建URLconf相关的通用视图的方法
Jul 20 Python
Python操作Excel之xlsx文件
Mar 24 Python
Python subprocess模块详细解读
Jan 29 Python
python 将数据保存为excel的xls格式(实例讲解)
May 03 Python
Python用csv写入文件_消除空余行的方法
Jul 06 Python
对python文件读写的缓冲行为详解
Feb 13 Python
python 计算积分图和haar特征的实例代码
Nov 20 Python
python hash每次调用结果不同的原因
Nov 21 Python
在python中求分布函数相关的包实例
Apr 15 Python
Python Mock模块原理及使用方法详解
Jul 07 Python
Python实战实现爬取天气数据并完成可视化分析详解
Jun 16 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
snoopy PHP版的网络客户端提供本地下载
2008/04/15 PHP
理解PHP中的stdClass类
2014/04/18 PHP
PHP实现负载均衡的加权轮询方法分析
2018/08/22 PHP
JQuery 文本框使用小结
2010/05/22 Javascript
javascript截取字符串(通过substring实现并支持中英文混合)
2013/06/24 Javascript
如何在父窗口中得知window.open()出的子窗口关闭事件
2013/10/15 Javascript
JavaScript中检测变量是否存在遇到的一些问题
2013/11/11 Javascript
JavaScript中的style.cssText使用教程
2014/11/06 Javascript
再分享70+免费的jquery 图片滑块效果插件和教程
2014/12/15 Javascript
JavaScript控制按钮可用或不可用的方法
2015/04/03 Javascript
JavaScript实现三级联动菜单效果
2017/08/16 Javascript
详解Webpack多环境代码打包的方法
2018/08/03 Javascript
Vue实现PC端靠边悬浮球的代码
2020/05/09 Javascript
vue.js 解决v-model让select默认选中不生效的问题
2020/07/28 Javascript
Python根据区号生成手机号码的方法
2015/07/08 Python
在Apache服务器上同时运行多个Django程序的方法
2015/07/22 Python
在VS Code上搭建Python开发环境的方法
2018/04/06 Python
详解配置Django的Celery异步之路踩坑
2018/11/25 Python
python2与python3的print及字符串格式化小结
2018/11/30 Python
tensorflow 实现自定义梯度反向传播代码
2020/02/10 Python
Pytorch中.new()的作用详解
2020/02/18 Python
Python+Appium实现自动化清理微信僵尸好友的方法
2021/02/04 Python
Meli Melo官网:名媛们钟爱的英国奢侈手包品牌
2017/04/17 全球购物
eBay荷兰购物网站:eBay.nl
2020/06/26 全球购物
广州喜创信息技术有限公司JAVA软件工程师笔试题
2012/10/17 面试题
业务员岗位职责
2013/11/16 职场文书
法务专员岗位职责
2014/01/02 职场文书
数学系毕业生的自我评价
2014/01/10 职场文书
单位法人授权委托书范本
2014/10/09 职场文书
绿色校园广播稿
2014/10/13 职场文书
群众路线自查报告及整改措施
2014/11/04 职场文书
2015年大学生工作总结
2015/04/21 职场文书
董事长年会致辞
2015/07/29 职场文书
深入理解CSS 中 transform matrix矩阵变换问题
2021/08/30 HTML / CSS
MySQL为数据表建立索引的原则详解
2022/03/03 MySQL
Elasticsearch 基本查询和组合查询
2022/04/19 Python