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计算程序开始到程序结束的运行时间和程序运行的CPU时间
Nov 28 Python
读写json中文ASCII乱码问题的解决方法
Nov 05 Python
SQLite3中文编码 Python的实现
Jan 11 Python
浅谈Python生成器generator之next和send的运行流程(详解)
May 08 Python
Python+树莓派+YOLO打造一款人工智能照相机
Jan 02 Python
Python下调用Linux的Shell命令的方法
Jun 12 Python
Python采集猫眼两万条数据 对《无名之辈》影评进行分析
Dec 05 Python
Django 查询数据库并返回页面的例子
Aug 12 Python
Python类反射机制使用实例解析
Dec 30 Python
vscode写python时的代码错误提醒和自动格式化的方法
May 07 Python
Python Process创建进程的2种方法详解
Jan 25 Python
python图像处理基本操作总结(PIL库、Matplotlib及Numpy)
Jun 08 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中全局变量global和$GLOBALS[]的区别分析
2012/08/06 PHP
一文看懂PHP进程管理器php-fpm
2020/06/01 PHP
Git命令之分支详解
2021/03/02 PHP
Iframe自适应高度绝对好使的代码 兼容IE,遨游,火狐
2011/01/27 Javascript
自己做的模拟模态对话框实现代码
2012/05/23 Javascript
javascript学习笔记(十四) window对象使用介绍
2012/06/20 Javascript
javascript实现消灭星星小游戏简单版
2016/11/15 Javascript
JavaScript中最常用的10种代码简写技巧总结
2017/06/28 Javascript
Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)
2017/10/25 Javascript
vue+swiper实现侧滑菜单效果
2017/12/28 Javascript
解决vue-router进行build无法正常显示路由页面的问题
2018/03/06 Javascript
Vue 子组件与数据传递问题及注意事项
2019/07/11 Javascript
python基础教程之字典操作详解
2014/03/25 Python
在Django的视图中使用form对象的方法
2015/07/18 Python
python基础之入门必看操作
2017/07/26 Python
对python中return和print的一些理解
2017/08/18 Python
Python查看微信撤回消息代码
2018/06/07 Python
TensorFlow实现Logistic回归
2018/09/07 Python
python使用装饰器作日志处理的方法
2019/07/11 Python
基于Tensorflow的MNIST手写数字识别分类
2020/06/17 Python
HTML5中meta属性的使用方法
2016/02/29 HTML / CSS
详解前端HTML5几种存储方式的总结
2016/12/27 HTML / CSS
欧洲最大的笔和书写专家:The Pen Shop
2017/03/19 全球购物
经典C++面试题一
2016/11/06 面试题
Prototype如何为一个Ajax添加一个参数
2015/12/06 面试题
医院护士求职自荐信格式
2013/09/21 职场文书
求职简历自荐信
2013/10/20 职场文书
缓刑人员的思想汇报
2014/01/11 职场文书
网络教育自我鉴定
2014/02/04 职场文书
给老婆大人的检讨书
2014/02/24 职场文书
革命英雄事迹演讲稿
2014/09/13 职场文书
教师批评与自我批评材料
2014/10/16 职场文书
2014年餐厅服务员工作总结
2014/11/18 职场文书
自愿离婚协议书2015
2015/01/26 职场文书
Redis如何一键部署脚本
2021/04/12 Redis
CSS文本阴影 text-shadow 悬停效果详解
2022/05/25 HTML / CSS