2.5.2 处理重复
之前显示的结果集包括一个重复的值77bisect模块提供了两种方法来处理重复。新值可以插入到原值的左边或右边。insort()函数实际上是insort_right()的别名,这个函数会在原值之后插入新值。相应的insort_left()函数则在原值之前插入新值。
import bisect
# A series of random numbers
values = [14,85,77,26,50,45,66,79,10,3,84,77,1]
print('New Pos Contents')
print('--- --- --------')
# Use bisect_left and insort_left.
l = []
for i in values:
position = bisect.bisect_left(l,i)
bisect.insort_left(l,i)
print('{:3} {:3}'.format(i,position),l)
使用bisect_left()和insort_left()处理同样的数据时,结果是相同的有序列表,不过重复值插入的位置有所不同。
运行结果: