gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 27 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Python cookbook(数据结构与算法)对切片命名清除索引的方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

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

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

解决方案:对切片命名 。

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

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

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

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
>>> 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.start、s.stop以及s.step属性来得到关于该对象的信息.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
>>> 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异常) 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
>>> 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程序设计有所帮助.

原文链接:http://www.cnblogs.com/apple2016/p/5746817.html 。

最后此篇关于Python cookbook(数据结构与算法)对切片命名清除索引的方法的文章就讲到这里了,如果你想了解更多关于Python cookbook(数据结构与算法)对切片命名清除索引的方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com