博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
切片对象
阅读量:4981 次
发布时间:2019-06-12

本文共 998 字,大约阅读时间需要 3 分钟。

 

假定你要从一个记录(比如文件或其他类似格式)中的某些固定位置提取字段:

######    0123456789012345678901234567890123456789012345678901234567890'record = '....................100 .......513.25 ..........'cost = int(record[20:23]) * float(record[31:37])

与其那样写,为什么不想这样命名切片呢:

SHARES = slice(20, 23)PRICE = slice(31, 37)cost = int(record[SHARES]) * float(record[PRICE])

内置的 slice() 函数创建了一个切片对象。所有使用切片的地方都可以使用切片对象。比如:

>>> items = [0, 1, 2, 3, 4, 5, 6]>>> a = slice(2, 4)>>> items[2:4][2, 3]>>> items[a][2, 3]>>> items[a] = [10,11]>>> items[0, 1, 10, 11, 4, 5, 6]>>> del items[a]>>> items[0, 1, 4, 5, 6]

如果你有一个切片对象a,你可以分别调用它的 a.start , a.stop , a.step 属性来获取更多的信息。比如:

>>> a = slice(5, 50, 2)>>> a.start5>>> a.stop50>>> a.step2>>>

另外,你还可以通过调用切片的 indices(size) 方法将它映射到一个已知大小的序列上。

这个方法返回一个三元组 (start, stop, step) ,所有的值都会被缩小,直到适合这个已知序列的边界为止。 这样,使用的时就不会出现 IndexError 异常。比如:

>>> s = 'HelloWorld'>>> a.indices(len(s))(5, 10, 2)>>> for i in range(*a.indices(len(s))):...     print(s[i])...Wrd>>>

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/sea-stream/p/10573386.html

你可能感兴趣的文章
纵越6省1市-重新启动
查看>>
hive安装以及hive on spark
查看>>
jz1074 【基础】寻找2的幂
查看>>
Wannafly模拟赛5 A 思维 D 暴力
查看>>
【Linux开发】CCS远程调试ARM,AM4378
查看>>
Linux之ssh服务介绍
查看>>
排序:冒泡排序
查看>>
Java中instanceof关键字的用法总结
查看>>
引用类型-Function类型
查看>>
(转)Android 仿订单出票效果 (附DEMO)
查看>>
数据库多张表导出到excel
查看>>
微信小程序去除button默认样式
查看>>
Where does Visual Studio look for C++ Header files?
查看>>
Java打包可执行jar包 包含外部文件
查看>>
Windows Phone开发(37):动画之ColorAnimation
查看>>
js中escape,encodeURI,encodeURIComponent 区别(转)
查看>>
sass学习笔记-安装
查看>>
Flask (二) cookie 与 session 模型
查看>>
修改添加网址的教程文件名
查看>>
[BZOJ 1017][JSOI2008]魔兽地图DotR(树形Dp)
查看>>