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 实现插入排序算法
Jun 05 Python
复习Python中的字符串知识点
Apr 14 Python
Python实现统计英文单词个数及字符串分割代码
May 28 Python
python如何通过protobuf实现rpc
Mar 06 Python
Python使用matplotlib实现绘制自定义图形功能示例
Jan 18 Python
对python添加模块路径的三种方法总结
Oct 16 Python
解决python os.mkdir创建目录失败的问题
Oct 16 Python
用python生成1000个txt文件的方法
Oct 25 Python
Python实现连接MySql数据库及增删改查操作详解
Apr 16 Python
python实现多线程端口扫描
Aug 31 Python
python中图像通道分离与合并实例
Jan 17 Python
安装pytorch时报sslerror错误的解决方案
May 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
PHP中for循环语句的几种变型
2006/11/26 PHP
Cygwin中安装PHP方法步骤
2015/07/04 PHP
laravel使用Faker数据填充的实现方法
2019/04/12 PHP
ExtJS TabPanel beforeremove beforeclose使用说明
2010/03/31 Javascript
jQuery选中select控件 无法设置selected的解决方法
2010/09/01 Javascript
基于jquery的地址栏射击游戏代码
2011/03/10 Javascript
jquery.cookie.js 操作cookie实现记住密码功能的实现代码
2011/04/27 Javascript
jquery自动将form表单封装成json的具体实现
2014/03/17 Javascript
浅析jquery数组删除指定元素的方法:grep()
2016/05/19 Javascript
JavaScript实现设置默认日期范围为最近40天的方法分析
2017/07/12 Javascript
原生js实现form表单序列化的方法
2018/08/02 Javascript
vue+element创建动态的form表单及动态生成表格的行和列
2019/05/20 Javascript
Vue.js路由实现选项卡简单实例
2019/07/24 Javascript
微信小程序以ssm做后台开发的实现示例
2020/04/08 Javascript
区分vue-router的hash和history模式
2020/10/03 Javascript
NodeJS配置CORS实现过程详解
2020/12/02 NodeJs
javascript实现时钟动画
2020/12/03 Javascript
[07:48]DOTA2上海特级锦标赛主赛事首日RECAP
2016/03/04 DOTA
[01:00:11]DOTA2-DPC中国联赛 正赛 CDEC vs DLG BO3 第一场 2月7日
2021/03/11 DOTA
python 系统调用的实例详解
2017/07/11 Python
python中pip的安装与使用教程
2018/08/10 Python
一文带你了解Python中的字符串是什么
2018/11/20 Python
django框架模板语言使用方法详解
2019/07/18 Python
Python如何实现远程方法调用
2020/08/07 Python
Prometheus开发中间件Exporter过程详解
2020/11/30 Python
Python列表元素删除和remove()方法详解
2021/01/04 Python
英国百安居装饰建材网上超市:B&Q
2016/09/13 全球购物
家乐福巴西网上超市:Carrefour巴西
2016/10/31 全球购物
公关关系专员的自我评价分享
2013/11/20 职场文书
外贸业务员工作职责
2014/01/06 职场文书
税务干部鉴定材料
2014/02/11 职场文书
县长群众路线对照检查材料思想汇报
2014/10/02 职场文书
财务助理岗位职责范本
2014/10/09 职场文书
应聘教师求职信范文
2015/03/20 职场文书
2015年小学数学教师工作总结
2015/05/20 职场文书
导游词之西安骊山
2019/12/03 职场文书