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 文件读写操作实例详解
Mar 12 Python
Django中URL视图函数的一些高级概念介绍
Jul 20 Python
python 列表删除所有指定元素的方法
Apr 19 Python
对python3 urllib包与http包的使用详解
May 10 Python
PYTHON EVAL的用法及注意事项解析
Sep 06 Python
python安装本地whl的实例步骤
Oct 12 Python
python要安装在哪个盘
Jun 15 Python
python适合做数据挖掘吗
Jun 16 Python
python实现三种随机请求头方式
Jan 05 Python
教你怎么用python爬取爱奇艺热门电影
May 20 Python
Python如何识别银行卡卡号?
Jun 10 Python
Python爬虫框架之Scrapy中Spider的用法
Jun 28 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实现统计目录文件大小的函数
2015/12/25 PHP
php代码架构的八点注意事项
2016/01/25 PHP
php使用高斯算法实现图片的模糊处理功能示例
2016/11/11 PHP
Ajax执行顺序流程及回调问题分析
2012/12/10 Javascript
jquery attr方法获取input的checked属性问题
2014/05/26 Javascript
jquery图片播放浏览插件prettyPhoto使用详解
2014/12/19 Javascript
基于Flowplayer打造一款免费的WEB视频播放器附源码
2015/09/06 Javascript
JQuery点击行tr实现checkBox选中的简单实例
2016/05/26 Javascript
AngularJS 基础ng-class-even指令用法
2016/08/01 Javascript
BootStrap中关于Select下拉框选择触发事件及扩展
2016/11/22 Javascript
详解nodejs 文本操作模块-fs模块(三)
2016/12/22 NodeJs
BootStrap Select清除选中的状态恢复默认状态
2017/06/20 Javascript
vue综合组件间的通信详解
2017/11/06 Javascript
Angular中支持SCSS的方法
2017/11/18 Javascript
JS运动特效之任意值添加运动的方法分析
2018/01/24 Javascript
在vscode中统一vue编码风格的方法
2018/02/22 Javascript
利用vscode调试编译后的js代码详解
2018/05/14 Javascript
使用ng-packagr打包Angular的方法示例
2018/09/21 Javascript
angularJs中json数据转换与本地存储的实例
2018/10/08 Javascript
python之PyMongo使用总结
2017/05/26 Python
Python docx库用法示例分析
2019/02/16 Python
利用Python批量识别电子账单数据的方法
2021/02/08 Python
html5 css3实例教程 一款html5和css3实现的小机器人走路动画
2014/10/20 HTML / CSS
举例详解HTML5中使用JSON格式提交表单
2015/06/16 HTML / CSS
Sneaker Studio波兰:购买运动鞋
2018/04/28 全球购物
西铁城美国官方网站:Citizen Watch美国
2019/11/08 全球购物
沙特阿拉伯家用电器和电子产品购物网站:Sheta and Saif
2020/04/03 全球购物
移动通信专业自荐信范文
2013/11/12 职场文书
高校十八大报告感想
2014/01/27 职场文书
农村党员一句话承诺
2014/05/30 职场文书
小学生勤俭节约演讲稿
2014/08/28 职场文书
上课玩手机的检讨书
2014/10/01 职场文书
团组织推优材料
2014/12/29 职场文书
离婚案件原告代理词
2015/05/23 职场文书
2015年为民办实事工作总结
2015/05/26 职场文书
职工趣味运动会开幕词
2016/03/04 职场文书