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学习手册中的python多态示例代码
Jan 21 Python
Python创建文件和追加文件内容实例
Oct 21 Python
python实现下载指定网址所有图片的方法
Aug 08 Python
python+selenium+autoit实现文件上传功能
Aug 23 Python
TensorFlow实现Batch Normalization
Mar 08 Python
Python实现决策树C4.5算法的示例
May 30 Python
python用BeautifulSoup库简单爬虫实例分析
Jul 30 Python
Python pandas自定义函数的使用方法示例
Nov 20 Python
python中设置超时跳过,超时退出的方式
Dec 13 Python
Python爬虫库requests获取响应内容、响应状态码、响应头
Jan 25 Python
基于FME使用Python过程图解
May 13 Python
Python学习之time模块的基本使用
Jan 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
从零开始 教你如何搭建Discuz!4.1论坛
2006/07/07 PHP
php递归列出所有文件和目录的代码
2008/09/10 PHP
PHP漏洞全解(详细介绍)
2012/11/13 PHP
php使用strip_tags()去除html标签仍有空白的解决方法
2016/07/28 PHP
PHP 表单提交及处理表单数据详解及实例
2016/12/27 PHP
设定php简写功能的方法
2019/11/28 PHP
禁止刷新,回退的JS
2006/11/25 Javascript
深入理解javascript中return的作用
2013/12/30 Javascript
jquery对元素拖动排序示例
2014/01/16 Javascript
Iframe 自动适应页面的高度示例代码
2014/02/26 Javascript
使用Nodejs开发微信公众号后台服务实例
2014/09/03 NodeJs
jQuery实现HTML5 placeholder效果实例
2014/12/09 Javascript
jQuery实现的经典滑动门效果
2015/09/22 Javascript
js检测iframe是否加载完成的方法
2015/11/26 Javascript
JS函数的几种定义方式分析
2015/12/17 Javascript
第五章之BootStrap 栅格系统
2016/04/25 Javascript
js判断输入字符串是否为空、空格、null的方法总结
2016/06/14 Javascript
Bootstrap Img 图片样式(推荐)
2016/12/13 Javascript
原生js编写2048小游戏
2017/03/17 Javascript
百度地图去掉marker覆盖物或者去掉maker的label文字方法
2018/01/26 Javascript
Vue 使用beforeEach实现登录状态检查功能
2019/10/31 Javascript
JavaScript实现多个物体同时运动
2020/03/12 Javascript
jquery实现穿梭框功能
2021/01/19 jQuery
获取python的list中含有重复值的index方法
2018/06/27 Python
Python之多进程与多线程的使用
2021/02/23 Python
浅谈amaze-ui中datepicker和datetimepicker注意的几点
2020/08/21 HTML / CSS
如何写一个自定义标签
2012/12/28 面试题
大学生优秀的自我评价分享
2013/10/22 职场文书
小学生成长感言
2014/01/30 职场文书
工程类专业自荐信范文
2014/03/09 职场文书
五一促销活动总结
2014/07/01 职场文书
庆元旦活动总结
2014/07/09 职场文书
缅怀先烈演讲稿
2014/09/03 职场文书
个人简历求职信范文
2015/03/20 职场文书
python 制作一个gui界面的翻译工具
2021/05/14 Python
详解Anyscript开发指南绕过typescript类型检查
2022/09/23 Javascript