slice 对象


在 Python 中对序列进行切片非常常见,切片功能也非常好用。比如

# 取一个序列中的偶数项
seq = [1, 2, 3, 4, 5, 6]
seq[1::2]
>>> [2, 4, 6]

# 取第3到5个元素
seq = [1, 2, 3, 4, 5, 6]
seq[2:5]
>>> [3, 4, 5]

现在假如你有一个文件,文件中每行的特定位置记录这一些数据,比如

#                             数量       价格
record = '....................100 .......513.25 ..........'

你现在想通过切片来提取数据获得每行的总价,但这时候的代码会是这样的

cost = int(record[20:23]) * float(record[31:37])

这样硬编码可能会让你在两周后再来看代码时不知道 record[20:23] 获取的是什么。这时可以借助 Python 内建的 slice 函数来获取一个切片对象,这个切片对象可以完成切片同时还具有名字,不用担心代码难以阅读。

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

slice 应该算是用得很少的内建函数了,但在处理某些文本和数据的时候还是很有用的。
例子来自 《Python Cookbook》。

另见:funtools.islice

本作品采用《CC 协议》,转载必须注明作者和本文链接
多少事,从来急。天地转,光阴迫。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!