Python 中的bisect

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。比如下面的代码,我们可以看到出现重复的元素索引变化:

立即学习“Python免费学习笔记(深入)”;

 

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,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)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2281511.html

(0)
上一篇 2025年2月27日 18:43:15
下一篇 2025年2月27日 18:43:28

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • python中bisect模块用法实例

    本文实例讲述了python中bisect模块用法,分享给大家供大家参考。 具体方法分析如下: 这个模块只有几个函数,一旦决定使用二分搜索时,立马要想到使用这个模块。 示例代码如下: import bisectL = [1,3,3,6,8,1…

    编程技术 2025年2月27日
    200
  • python模块介绍-bisect有序列表

    bisect –维护有序列表 目的:不需要每次调用sort的方式维护有序列表。 bisect模块实现了一个算法用于插入元素到有序列表。在一些情况下,这比反复排序列表或构造一个大的列表再排序的效率更高。Bisect是二分法的意思,这里使用二分…

    编程技术 2025年2月27日
    200
  • python数组查找算法bisect二分查找插入

    1 实例 这个模块只有几个函数, 一旦决定使用二分搜索时,立马要想到使用这个模块  import bisect    L = [1,3,3,6,8,12,15]  x = 3    x_insert_point = bisect.bisec…

    编程技术 2025年2月27日
    200
  • python开发bisect

    现在有如下的需求: ”’    实现这样的一个功能:    对一个班级的学生的成绩做出一些评定,评定规则是:    one: [0-60)     — F    two: [60-70)    — D    three: [70-80…

    2025年2月27日
    200
  • Python 二分查找与 bisect 模块

    python 的列表(list)内部实现是一个数组,也就是一个线性表。在列表中查找元素可以使用 list.index() 方法,其时间复杂度为o(n)。对于大数据量,则可以用二分查找进行优化。二分查找要求对象必须有序,其基本原理如下: 1.…

    编程技术 2025年2月27日
    200
  • bisect数组的二分算法

    本模块实现已经排序的队列列表插入元素之后保持排序。对于个大量数据的列表来看,插入元素并保持排序,计算量是非常大的。本模块实现了bisect算法,主要基于二分算法来实现。 bisect.bisect_left(a, x, lo=0, hi=l…

    编程技术 2025年2月27日
    200
  • GIT中的二分查找(GIT BISECT)

    用git管理的代码仓库,如果发现引入的新的bug,则可以使用 “git bisect” 来进行二分查找,从而定位是到引入bug的commit。这也特别是linux、kvm、qemu等开源社区中大家最常用的方法。当有bug被fix时,也可以同…

    编程技术 2025年2月27日
    200
  • 使用git bisect快速定位引入错误的版本

    现在有个项目,在一天的开发中,被某个工程师引入了一个bug,取系统并发上不去,直接锁死数据库连接。项目使用java平台,在svn上进行版本管理。我不想一个个版本code review排查,就想到了最暴力折半版本查找法,当然,在svn上做意味…

    编程技术 2025年2月27日
    200

发表回复

登录后才能评论