Python cookbook(数据结构与算法)对切片命名清除索引的方法

 更新时间:2018年03月13日 09:36:06   作者:垄上行   我要评论
这篇文章主要介绍了Python cookbook(数据结构与算法)对切片命名清除索引的方法,结合实例形式分析了Python字符串截取及indices方法映射序列的相关操作技巧,需要的朋友可以参考下

本文实例讲述了Python对切片命名清除索引的方法。分享给大家供大家参考,具体如下:

问题:如何清理掉到处都是硬编码的切片索引

解决方案:对切片命名

假设有一些代码用来从字符串的固定位置中取出具体的数据(比如从一个平面文件或类似的格式:平面文件flat file是一种包含没有相对关系结构的记录文件):

########0123456789012345678901234567890123456789012345678901234567890123456789
record='....................100.......513.25..........'
cost=int(record[20:23])*float(record[30:36])

与其这样做,倒不如对切片进行命名:避免了使用许多神秘难懂的硬编码索引,代码变得清晰许多。

SHARES=slice(20,23) #对切片命名
PRICE=slice(30,36) #对切片命名
cost=int(record[SHARES])*float(record[PRICE])

一般来说,内置的slice()函数会创建一个切片对象,可以用在任何允许进行切片操作的地方。

>>> items=[0,1,2,3,4,5,6]
>>> a=slice(2,4)
>>> a
slice(2, 4, None)
>>> items[a]
[2, 3]
>>> items[2:4]
[2, 3]
>>> items[a]=[77,88]
>>> items
[0, 1, 77, 88, 4, 5, 6]
>>> del items[a]
>>> items
[0, 1, 4, 5, 6]
>>> 

如果有一个slice对象的实例s,可以分别通过s.starts.stop以及s.step属性来得到关于该对象的信息。

>>> items=[0,1,2,3,4,5,6]
>>> a=slice(2,4)
>>> a
slice(2, 4, None)
>>> a.start
2
>>> a.stop
4
>>> a.step
>>> b=slice(1,5,2)
>>> b
slice(1, 5, 2)
>>> b.start
1
>>> b.stop
5
>>> b.step
2
>>> 

另外,可以通过使用indices(size)方法将切片映射到特定大小的序列上。这会返回一个(start,stop,step)元组,所有的值都已经恰当地限制在边界以内(当做索引操作时可避免出现IndexError异常)

>>> items=[0,1,2,3,4,5,6]
>>> a=slice(2,4)
>>> a
slice(2, 4, None)
>>> a.start
2
>>> a.stop
4
>>> a.step
>>> b=slice(1,5,2)
>>> b
slice(1, 5, 2)
>>> b.start
1
>>> b.stop
5
>>> b.step
2
>>> s='HelloWorld'
>>> a.indices(len(s))
(2, 4, 1)
>>> b.indices(len(s))
(1, 5, 2)
>>> items[a]
[2, 3]
>>> items[b]
[1, 3]
>>> for i in range(*a.indices(len(s))):
  print(s[i])
l
l
>>> for i in range(*b.indices(len(s))):
  print(s[i])
e
l
>>> c=slice(0,8,2)
>>> c
slice(0, 8, 2)
>>> for i in range(*c.indices(len(s))):
  print(s[i])
H
l
o
o
>>> 

(代码摘自《Python Cookbook》)

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总

希望本文所述对大家Python程序设计有所帮助。

您可能感兴趣的文章:

相关文章

  • 实例讲解Python爬取网页数据

    实例讲解Python爬取网页数据

    这篇文章给大家通过实例讲解了Python爬取网页数据的步骤以及操作过程,有兴趣的朋友跟着学习下吧。
    2018-07-07
  • 初步解析Python下的多进程编程

    初步解析Python下的多进程编程

    这篇文章主要介绍了初步解析Python下的多进程编程,使用多进程编程一直是Python编程当中的重点和难点,需要的朋友可以参考下
    2015-04-04
  • python中时间模块的基本使用教程

    python中时间模块的基本使用教程

    这篇文章主要给大家介绍了关于python中时间模块的基本使用的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-05-05
  • Python实现并行抓取整站40万条房价数据(可更换抓取城市)

    Python实现并行抓取整站40万条房价数据(可更换抓取城市)

    本文主要是以房价网房价信息爬虫为例,对Python实现整站40万条房价数据并行抓取(可更换抓取城市)的方法进行分析介绍。需要的朋友一起来看下吧
    2016-12-12
  • PyQt5每天必学之切换按钮

    PyQt5每天必学之切换按钮

    这篇文章主要为大家详细介绍了PyQt5每天必学之切换按钮的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • Python读取网页内容的方法

    Python读取网页内容的方法

    这篇文章主要介绍了Python读取网页内容的方法,实例分析了Python基于URL读取网页内容的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • python实现连续图文识别

    python实现连续图文识别

    这篇文章主要为大家详细介绍了python实现连续图文识别功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • Python编写一个优美的下载器

    Python编写一个优美的下载器

    这篇文章主要教大家如何使用Python编写一个优美的下载器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • Python文件监听工具pyinotify与watchdog实例

    Python文件监听工具pyinotify与watchdog实例

    今天小编就为大家分享一篇关于Python文件监听工具pyinotify与watchdog实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • Python使用pymysql小技巧

    Python使用pymysql小技巧

    pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同。但目前pymysql支持python3.x而后者不支持3.x版本。
    2017-06-06

最新评论