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网络编程学习笔记(10):webpy框架
Jun 09 Python
Python实现设置windows桌面壁纸代码分享
Mar 28 Python
解析Python中的__getitem__专有方法
Jun 27 Python
Python中列表与元组的乘法操作示例
Feb 10 Python
Python解析json代码实例解析
Nov 25 Python
给keras层命名,并提取中间层输出值,保存到文档的实例
May 23 Python
浅谈matplotlib 绘制梯度下降求解过程
Jul 12 Python
如何快速一次性卸载所有python包(第三方库)呢
Oct 20 Python
python中pop()函数的语法与实例
Dec 01 Python
matplotlib制作雷达图报错ValueError的实现
Jan 05 Python
Python time库的时间时钟处理
May 02 Python
python编程实现清理微信重复缓存文件
Nov 01 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
2.PHP入门
2006/10/09 PHP
php array_intersect比array_diff快(附详细的使用说明)
2011/07/03 PHP
ThinkPHP处理Ajax返回的方法
2014/11/22 PHP
laravel框架中间件 except 和 only 的用法示例
2019/07/12 PHP
JavaScript实现统计文本框Textarea字数增强用户体验
2012/12/21 Javascript
JS实现的表格操作类详解(添加,删除,排序,上移,下移)
2015/12/22 Javascript
表单中单选框添加选项和移除选项
2016/07/04 Javascript
第一次动手实现bootstrap table分页效果
2016/09/22 Javascript
JS 设置Cookie 有效期 检测cookie
2017/06/15 Javascript
使用JavaScript实现alert的实例代码
2017/07/06 Javascript
vue2.0+vue-dplayer实现hls播放的示例
2018/03/02 Javascript
web3.js增加eth.getRawTransactionByHash(txhash)方法步骤
2018/03/15 Javascript
微信小程序实现点赞、取消点赞功能
2018/11/02 Javascript
从零开始实现Vue简单的Toast插件
2018/12/03 Javascript
python3转换code128条形码的方法
2019/04/17 Python
python开启debug模式的方法
2019/06/27 Python
文件上传服务器-jupyter 中python解压及压缩方式
2020/04/22 Python
Python通过递归函数输出嵌套列表元素
2020/10/15 Python
HTML5 Canvas 实现K线图的示例代码
2019/12/23 HTML / CSS
北美领先的牛仔品牌:Buffalo David Bitton
2017/05/22 全球购物
慕尼黑山地运动、户外服装和体育用品专家:Sporthaus Schuster
2019/08/27 全球购物
Jones Bootmaker官网:优质靴子和鞋子在线
2020/11/30 全球购物
中学教师实习自我鉴定
2013/09/28 职场文书
客服主管岗位职责
2013/12/13 职场文书
酒吧创业计划书
2014/01/18 职场文书
2014年党员公开承诺书范文
2014/03/28 职场文书
科技节口号
2014/06/19 职场文书
最美家庭活动方案
2014/08/31 职场文书
党员违纪检讨书怎么写
2014/11/01 职场文书
2015年建筑工程工作总结
2015/05/13 职场文书
学历证明样本
2015/06/16 职场文书
你离财务总监还有多远?速览CFO的岗位职责
2019/11/18 职场文书
Django使用channels + websocket打造在线聊天室
2021/05/20 Python
Rhit高效可视化Nginx日志查看工具
2021/11/01 Servers
DE1103使用报告
2022/04/05 无线电
Mysql 数据库中的 redo log 和 binlog 写入策略
2022/04/26 MySQL