流畅的 Python(30):序列构成的数组 2.8.2

阅读数:11 2019 年 11 月 20 日 17:11

流畅的Python(30):序列构成的数组 2.8.2

内容简介
本书致力于帮助 Python 开发人员挖掘这门语言及相关程序库的优秀特性,避免重复劳动,同时写出简洁、流畅、易读、易维护,并且具有地道 Python 风格的代码。本书尤其深入探讨了 Python 语言的高级用法,涵盖数据结构、Python 风格的对象、并行与并发,以及元编程等不同的方面。

(用bisect.insort插入新元素)

排序很耗时,因此在得到一个有序序列之后,我们最好能够保持它的有序。bisect.insort 就是为了这个而存在的。

insort(seq, item) 把变量 item 插入到序列 seq 中,并能保持 seq 的升序顺序。详见示例 2-19 和它在图 2-6 里的输出。

示例 2-19 insort 可以保持有序序列的顺序

复制代码
import bisect
import random
SIZE=7
random.seed(1729)
my_list = []
for i in range(SIZE):
new_item = random.randrange(SIZE*2)
bisect.insort(my_list, new_item)
print('%2d ->' % new_item, my_list)

流畅的Python(30):序列构成的数组 2.8.2

图 2-6:示例 2-19 的输出

insortbisect 一样,有 lohi 两个可选参数用来控制查找的范围。它也有个变体叫 insort_left,这个变体在背后用的是 bisect_left

目前所提到的内容都不仅仅是对列表或者元组有效,还可以应用于几乎所有的序列类型上。有时候因为列表实在是太方便了,所以 Python 程序员可能会过度使用它,反正我知道我犯过这个毛病。而如果你只需要处理数字列表的话,数组可能是个更好的选择。下面就来讨论一些可以替换列表的数据结构。

流畅的Python(30):序列构成的数组 2.8.2

图灵地址 https://www.ituring.com.cn/book/1564

评论

发布