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进阶教程之循环对象
Aug 30 Python
Windows和Linux下Python输出彩色文字的方法教程
May 02 Python
Python标准库之itertools库的使用方法
Sep 07 Python
使用python的turtle绘画滑稽脸实例
Nov 21 Python
Python Print实现在输出中插入变量的例子
Dec 25 Python
Python类中self参数用法详解
Feb 13 Python
Python 解析pymysql模块操作数据库的方法
Feb 18 Python
Python开发之身份证验证库id_validator验证身份证号合法性及根据身份证号返回住址年龄等信息
Mar 20 Python
python构造IP报文实例
May 05 Python
python导入库的具体方法
Jun 18 Python
Pycharm导入anaconda环境的教程图解
Jul 31 Python
python开发入门——set的使用
Sep 03 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
web方式ftp
2006/10/09 PHP
PHP实时显示输出
2008/10/02 PHP
curl实现站外采集的方法和技巧
2014/01/31 PHP
PHP中返回引用类型的方法
2015/04/03 PHP
wampserver改变默认网站目录的办法
2015/08/05 PHP
PHP多维数组转一维数组的简单实现方法
2015/12/23 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
2018/02/06 PHP
Gambit vs ForZe BO3 第三场 2.13
2021/03/10 DOTA
js 文件引入实现代码
2010/04/23 Javascript
jquery easyui combox一些实用的小方法
2013/12/25 Javascript
js获取日期:昨天今天和明天、后天
2014/06/11 Javascript
jQuery简单实现QQ空间点赞已经取消点赞
2015/04/02 Javascript
html5+javascript实现简单上传的注意细节
2016/04/18 Javascript
jquery实现折叠菜单效果【推荐】
2017/03/08 Javascript
浅谈通过JS拦截 pushState和replaceState事件
2017/07/21 Javascript
解决修复npm安装全局模块权限的问题
2018/05/17 Javascript
Vue使用NPM方式搭建项目
2018/10/25 Javascript
vue遍历对象中的数组取值示例
2019/11/07 Javascript
js实现适配移动端的拖动效果
2020/01/13 Javascript
vue 动态设置img的src地址无效,npm run build 后找不到文件的解决
2020/07/26 Javascript
[01:24]DOTA2上海特锦赛OG战队抵达 专车接机入驻总统套房
2016/02/23 DOTA
python根据经纬度计算距离示例
2014/02/16 Python
python解析中国天气网的天气数据
2014/03/21 Python
python tkinter canvas 显示图片的示例
2019/06/13 Python
详解利用python+opencv识别图片中的圆形(霍夫变换)
2019/07/01 Python
python多线程分块读取文件
2019/08/29 Python
python Tensor和Array对比分析
2020/01/08 Python
如何在Win10系统使用Python3连接Hive
2020/10/15 Python
尼克松手表官网:Nixon手表
2019/03/17 全球购物
应届生财务会计求职信
2013/11/05 职场文书
会计顶岗实习心得
2014/01/25 职场文书
2014年“四风”问题个人整改措施
2014/09/17 职场文书
毕业生银行实习自我鉴定
2014/10/14 职场文书
2014年绩效考核工作总结
2014/12/11 职场文书
春节随笔
2015/08/15 职场文书
Python游戏开发实例之graphics实现AI五子棋
2021/11/01 Python