国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python cookbook(數據結構與算法)對切片命名清除索引的方法

2020-02-22 23:26:34
字體:
來源:轉載
供稿:網友

本文實例講述了Python對切片命名清除索引的方法。分享給大家供大家參考,具體如下:

問題:如何清理掉到處都是硬編碼的切片索引

解決方案:對切片命名

假設有一些代碼用來從字符串的固定位置中取出具體的數據(比如從一個平面文件或類似的格式:平面文件flat file是一種包含沒有相對關系結構的記錄文件):

########0123456789012345678901234567890123456789012345678901234567890123456789record='....................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)>>> aslice(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)>>> aslice(2, 4, None)>>> a.start2>>> a.stop4>>> a.step>>> b=slice(1,5,2)>>> bslice(1, 5, 2)>>> b.start1>>> b.stop5>>> b.step2>>> 

另外,可以通過使用indices(size)方法將切片映射到特定大小的序列上。這會返回一個(start,stop,step)元組,所有的值都已經恰當地限制在邊界以內(當做索引操作時可避免出現IndexError異常)

>>> items=[0,1,2,3,4,5,6]>>> a=slice(2,4)>>> aslice(2, 4, None)>>> a.start2>>> a.stop4>>> a.step>>> b=slice(1,5,2)>>> bslice(1, 5, 2)>>> b.start1>>> b.stop5>>> b.step2>>> 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])ll>>> for i in range(*b.indices(len(s))):  print(s[i])el>>> c=slice(0,8,2)>>> cslice(0, 8, 2)>>> for i in range(*c.indices(len(s))):  print(s[i])Hloo>>> 

(代碼摘自《Python Cookbook》)

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》及《Python文件與目錄操作技巧匯總》

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 石河子市| 奉节县| 措勤县| 彭泽县| 英吉沙县| 当涂县| 毕节市| 库尔勒市| 木兰县| 潞城市| 井研县| 松潘县| 毕节市| 清远市| 邹平县| 武穴市| 许昌市| 汶上县| 上栗县| 彩票| 灵川县| 湖州市| 任丘市| 阿拉善左旗| 南华县| 大丰市| 维西| 云安县| 晋中市| 汝南县| 高陵县| 辽阳县| 闵行区| 中山市| 梧州市| 无棣县| 行唐县| 松江区| 通河县| 正宁县| 清新县|