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 相关文章推荐
Python3 入门教程 简单但比较不错
Nov 29 Python
python基础教程之字典操作详解
Mar 25 Python
Flask框架WTForm表单用法示例
Jul 20 Python
PyCharm代码回滚,恢复历史版本的解决方法
Oct 22 Python
使用Python快速制作可视化报表的方法
Feb 03 Python
详解Python正则表达式re模块
Mar 19 Python
利用PyCharm Profile分析异步爬虫效率详解
May 08 Python
python爬虫 正则表达式解析
Sep 28 Python
python+selenium+Chrome options参数的使用
Mar 18 Python
Selenium使用Chrome模拟手机浏览器方法解析
Apr 10 Python
pandas分批读取大数据集教程
Jun 06 Python
通过实例解析python创建进程常用方法
Jun 19 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/04/03 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
2017/11/10 PHP
实例讲解PHP表单
2020/06/10 PHP
几个比较实用的JavaScript 测试及效验工具
2010/04/18 Javascript
不使用jquery实现js打字效果示例分享
2014/01/19 Javascript
jQuery 中的 DOM 操作
2016/04/26 Javascript
ES6学习之变量的两种命名方法示例
2017/07/18 Javascript
js与jQuery实现的用户注册协议倒计时功能实例【三种方法】
2017/11/09 jQuery
jfinal与bootstrap的登出实战详解
2017/11/27 Javascript
vue-router 组件复用问题详解
2018/01/22 Javascript
JavaScript基于遍历操作实现对象深拷贝功能示例
2019/03/05 Javascript
使用 Vue 实现一个虚拟列表的方法
2019/08/20 Javascript
在LayUI图片上传中,解决由跨域问题引起的请求接口错误的方法
2019/09/24 Javascript
vue父子模板传值问题解决方法案例分析
2020/02/26 Javascript
在Vue.js中使用TypeScript的方法
2020/03/19 Javascript
从Node.js事件触发器到Vue自定义事件的深入讲解
2020/06/26 Javascript
Python实现针对给定字符串寻找最长非重复子串的方法
2018/04/21 Python
transform python环境快速配置方法
2018/09/27 Python
Python多图片合并PDF的方法
2019/01/03 Python
django3.02模板中的超链接配置实例代码
2020/02/04 Python
如何配置关联Python 解释器 Anaconda的教程(图解)
2020/04/30 Python
详解Django配置JWT认证方式
2020/05/09 Python
伦敦最著名的老字号百货公司:Selfridges(塞尔福里奇百货)
2016/07/25 全球购物
香港卓悦化妆品官网:BONJOUR
2017/09/21 全球购物
Origins加拿大官网:雅诗兰黛集团高端植物护肤品牌
2017/11/19 全球购物
2019年Java 最常见的 面试题
2016/10/19 面试题
运动会领导邀请函
2014/01/10 职场文书
幼儿园庆六一游园活动方案
2014/01/29 职场文书
环保倡议书
2014/04/14 职场文书
2014年党支部学习材料
2014/05/19 职场文书
高中学生自我评价范文
2014/09/23 职场文书
教师个人工作总结范文2014
2014/11/10 职场文书
采购员岗位职责范本
2015/04/07 职场文书
上班迟到检讨书范文
2015/05/06 职场文书
MySQL基础(一)
2021/04/05 MySQL
SQL Server数据库备份和恢复数据库的全过程
2022/06/14 SQL Server