• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Python 中的bisect

python 搞代码 4年前 (2022-01-09) 20次浏览 已收录 0个评论

Python 中的bisect用于操作排序的数组,比如你可以在向一个数组插入数据的同时进行排序。下面的代码演示了如何进行操作:

输出结果为:

New pos contents----------------- 14   0 [14] 85   1 [14, 85] 77   1 [14, 77, 85] 26   1 [14, 26, 77, 85] 50   2 [14, 26, 50, 77, 85] 45   2 [14, 26, 45, 50, 77, 85] 66   4 [14, 26, 45, 50, 66, 77, 85] 79   6 [14, 26, 45, 50, 66, 77, 79, 85] 10   0 [10, 14, 26, 45, 50, 66, 77, 79, 85]  3   0 [3, 10, 14, 26, 45, 50, 66, 77, 79, 85] 84   9 [3, 10, 14, 26, 45, 50, 66, 77, 79, 84, 85] 44   4 [3, 10, 14, 26, 44, 45, 50, 66, 77, 79, 84, 85] 77   9 [3, 10, 14, 26, 44, 45, 50, 66, 77, 77, 79, 84, 85]  1   0 [1, 3, 10, 14, 26, 44, 45, 50, 66, 77, 77, 79, 84, 85]

可以看到,在插入这些随机数的时候数组同时进行了排序。不过其中有一些重复的元素,比如上面的77,77。你可以对这些重复元素的顺序进行设置,如果希望重复的元素出现在与他相同的元素左边就是用bisect_left,否则就是用bisect_right,相应的使用insort_left和insort_right。比如下面的代码,我们可以看到出现重复的元素索引变化:

import bisectimport randomrandom.seed(1)print('New pos contents')print('-----------------')l=[] for i in range(1,15):    r=random.randint(1,100)    position=bisect.bisect_left(l,r)    bisect.insort_left(l,r)    print '%3d %3d'%(r,<i style="color:transparent">本文来源gaodai$ma#com搞$代*码6网</i>position),l

输出结果为:

New pos contents----------------- 14   0 [14] 85   1 [14, 85] 77   1 [14, 77, 85] 26   1 [14, 26, 77, 85] 50   2 [14, 26, 50, 77, 85] 45   2 [14, 26, 45, 50, 77, 85] 66   4 [14, 26, 45, 50, 66, 77, 85] 79   6 [14, 26, 45, 50, 66, 77, 79, 85] 10   0 [10, 14, 26, 45, 50, 66, 77, 79, 85]  3   0 [3, 10, 14, 26, 45, 50, 66, 77, 79, 85] 84   9 [3, 10, 14, 26, 45, 50, 66, 77, 79, 84, 85] 44   4 [3, 10, 14, 26, 44, 45, 50, 66, 77, 79, 84, 85] 77   8 [3, 10, 14, 26, 44, 45, 50, 66, 77, 77, 79, 84, 85]  1   0 [1, 3, 10, 14, 26, 44, 45, 50, 66, 77, 77, 79, 84, 85]

此函数bisect.bisect(list,key) ,犹如java里的TreeMap的tailMap(fromkey)


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Python 中的bisect
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址