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 相关文章推荐
17个Python小技巧分享
Jan 23 Python
python BeautifulSoup设置页面编码的方法
Apr 03 Python
Python中asyncore异步模块的用法及实现httpclient的实例
Jun 28 Python
python 创建一个空dataframe 然后添加行数据的实例
Jun 07 Python
使用NumPy和pandas对CSV文件进行写操作的实例
Jun 14 Python
python3使用flask编写注册post接口的方法
Dec 28 Python
Python传递参数的多种方式(小结)
Sep 18 Python
浅谈python已知元素,获取元素索引(numpy,pandas)
Nov 26 Python
python框架Django实战商城项目之工程搭建过程图文详解
Mar 09 Python
解决pyinstaller 打包exe文件太大,用pipenv 缩小exe的问题
Jul 13 Python
python中关于数据类型的学习笔记
Jul 19 Python
python编程简单几行代码实现视频转换Gif示例
Oct 05 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
SONY SRF-22W(33W)的电路分析和维修案例
2021/03/02 无线电
咖啡磨器 如何选购一台适合家用的意式磨豆机
2021/03/05 新手入门
php中日期加减法运算实现代码
2011/12/08 PHP
在Windows XP下安装Apache+MySQL+PHP环境
2015/02/22 PHP
php获取发送给用户的header信息的方法
2015/03/16 PHP
如何使用Gitblog和Markdown建自己的博客
2015/07/31 PHP
详解PHP的抽象类和抽象方法以及接口总结
2019/03/15 PHP
JavaScript 事件属性绑定带参数的函数
2009/03/13 Javascript
利用jQuery 实现GridView异步排序、分页的代码
2010/02/06 Javascript
基于JQuery的cookie插件
2010/04/07 Javascript
下拉菜单点击实现连接跳转功能的js代码
2013/05/19 Javascript
js购物车实现思路及代码(个人感觉不错)
2013/12/23 Javascript
jquery阻止后续事件只执行第一个事件
2014/07/24 Javascript
node.js中的http.response.write方法使用说明
2014/12/14 Javascript
js实现时间显示几天前、几小时前或者几分钟前的方法集锦
2015/05/29 Javascript
js实现a标签超链接提交form表单的方法
2015/06/24 Javascript
全面解析JavaScript的Backbone.js框架中的Router路由
2016/05/05 Javascript
如何利用@angular/cli V6.0直接开发PWA应用详解
2018/05/06 Javascript
JavaScript常用数组操作方法,包含ES6方法
2020/05/10 Javascript
微信小程序如何使用云开发
2019/05/17 Javascript
vue-next/runtime-core 源码阅读指南详解
2019/10/25 Javascript
jQuery--遍历操作实例小结【后代、同胞及过滤】
2020/05/22 jQuery
Python入门_浅谈字符串的分片与索引、字符串的方法
2017/05/16 Python
Python3实现抓取javascript动态生成的html网页功能示例
2017/08/22 Python
python 读写中文json的实例详解
2017/10/29 Python
Django中的CBV和FBV示例介绍
2018/02/25 Python
python批量查询、汉字去重处理CSV文件
2018/05/31 Python
Flask框架钩子函数功能与用法分析
2019/08/02 Python
安装PyInstaller失败问题解决
2019/12/14 Python
django orm模块中的 is_delete用法
2020/05/20 Python
澳大利亚网上买书:Angus & Robertson
2019/07/21 全球购物
物业客服专员岗位职责
2013/11/30 职场文书
二手书店创业计划书
2014/01/16 职场文书
五一劳动节慰问信
2015/02/14 职场文书
大学生自荐书范文
2015/03/05 职场文书
2015年大学教师工作总结
2015/05/20 职场文书