bisect模块功能:使用二分法将数据按顺序插入一个列表

该模块主要有两个函数:

1、insort_right   ====>按从小到大顺序将数据插入一个列表

2、bisect_right   ====>返回一个位置。即:如果将一个数据从小到大插入一个列表则应该插在列表中的哪个位置,只是返回一个位置,并不会真的将数据插进去。

1、insort_right

 insort_right(a, x, lo=0, hi=None)

 """

 通过二分法向列表中按从小到大的顺序插入数据。a为原始列表,x为插入数据,lo为二分法初始最左边的位置,hi为二分法初始最右边位置(None时会选择列表最后一个位置)

 以下为使用举例:

 """

 a = [1, 2, 3, 5, 7]

 x= 4

 insort_right(a, x, lo=0, hi=None)

 print(a)  ===>结果为:[1, 2, 3, 4, 5, 7]
 insort_left(a, x, lo=0, hi=None)

 """

 功能和insort_right一样,都是将x按从小到大顺序插入a! 

 不同的是left是每次是猜x应该在二分法的右边,不对的话再把范围缩小到左边;right是先猜x应该在二分法的左边,不对的话再把范围缩小到右边。

 (感觉从效率上这两种方法没有太大本质性的区别,所以用哪个都行)

 """

2、bisect_right

 bisect_right(a, x, lo=0, hi=None):

 """

 通过二分法查找出应该把X插入到列表a(从小到大排序的列表)中的哪个位置,并再该位置返回。注意这个是返回位置而不是插入数据。lo和hi作用同上

 以下为举例:

 """

 a = [1, 2, 3, 5, 7]

 x = 4

 print(bisect.bisect_right(a, x))   ===>此处打印3,即应插入的位置

 print(a)   ===>打印结果显示a还是原来的值[1, 2, 3, 5, 7]
 bisect_left(a, x, lo=0, hi=None):

 """

 功能和insort_right一样,都是将x按从小到大顺序插入a! 

 不同的是left是每次是猜x应该在二分法的右边,不对的话再把范围缩小到左边;right是先猜x应该在二分法的左边,不对的话再把范围缩小到右边。

 (感觉从效率上这两种方法没有太大本质性的区别,所以用哪个都行)

 """

bisect模块(使用二分法将数据按顺序插入一个列表)的更多相关文章

  1. python标准库 bisect模块

    # -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #bisect #作用:维护有序列表,而不必在每次向列表增加一个元素 ...

  2. python bisect模块二分法查找

    #!/usr/bin/env python # encoding: utf-8 import bisect import sys #将一个元素插入到一个有序列表的合适位置 #使用这个模块的函数前先确保 ...

  3. python的算法:二分法查找(2)--bisect模块

    Python 有一个 bisect 模块,用于维护有序列表.bisect 模块实现了一个算法用于插入元素到有序列表.在一些情况下,这比反复排序列表或构造一个大的列表再排序的效率更高.Bisect 是二 ...

  4. python bisect 排序模块 二分查找与 bisect 模块

    python 3.6.5 import bisect bisect_list=dir(bisect)print(bisect_list)bisect_list = ['__builtins__', ' ...

  5. 二分查找与 bisect 模块

    Python 的列表(list)内部实现是一个数组,也就是一个线性表.在列表中查找元素可以使用 list.index() 方法,其时间复杂度为O(n).对于大数据量,则可以用二分查找进行优化.二分查找 ...

  6. Python的bisect模块

    Python的列表(list)类型内部是一个线性表,在线性表中查找元素复杂度为O(N),即调用list.index()的复杂的是O(N).当数据量较大时,应该使用二分查找优化,二分查找范围每次缩小一般 ...

  7. JavaScript用二分法查找数据等

    //二分法查数据 var arr=[41,43,45,53,44,95,23]; var b=44; var min=0; var max=arr.length; for(var i=1;i<a ...

  8. Nodejs中cluster模块的多进程共享数据问题

    Nodejs中cluster模块的多进程共享数据问题 前述 nodejs在v0.6.x之后增加了一个模块cluster用于实现多进程,利用child_process模块来创建和管理进程,增加程序在多核 ...

  9. db file sequential read (数据文件顺序读取)

    转载:http://www.dbtan.com/2010/04/db-file-sequential-read.html db file sequential read (数据文件顺序读取): db ...

随机推荐

  1. Kubernetes中的RBAC

    Kubernetes中,授权有ABAC(基于属性的访问控制).RBAC(基于角色的访问控制).Webhook.Node.AlwaysDeny(一直拒绝)和AlwaysAllow(一直允许)这6种模式. ...

  2. python入门 -- 环境搭建(windows)

    1. 下载Anaconda Anaconda内置了python解释器及经常使用的库,提供了编译好的环境.根据自己的操作系统,自行从下面网站挑选一个较新的版本,下载安装即可. https://mirro ...

  3. imagecreatefrombmp、imagebmp php处理bmp文件

    /*格式组成典型的BMP图像文件由四部分组成: 1:位图头文件数据结构,它包含BMP图像文件的类型.显示内容等信息: 2:位图信息数据结构,它包含有BMP图像的宽.高.压缩方法,以及定义颜色等信息: ...

  4. web项目如何使用Material Icons

    使用文档链接 图标库 最简单的使用方法 引入 <link href="https://fonts.googleapis.com/icon?family=Material+Icons&q ...

  5. swust oj 1011

    二叉排序树的实现和查找 1000(ms) 10000(kb) 2782 / 6301 按照给定的关键字集合,建立二叉排序树.在建立的二叉排序树上查找指定的关键字,查找成功,输出找到该关键字比较的次数: ...

  6. linux 重新生成网卡配置文件

    nmcli connection add con-name home type ethernet ifname eth1 autoconnect yes ip4 10.1.252.60/24 gw4 ...

  7. request.getRequestDispatcher跳转jsp页面失败

    我在JS里面写了个Ajax,传值给控制器,然后利用request.getRequestDispatcher(),打算跳转至另外一个页面.但是没有跳转成功,运行之后没反应. 在网上搜了资料发现,利用aj ...

  8. 值得收藏!!javascript数组中多条对象去重方式,很实用!!!

    在数组中都是数字的时候很好去重,例如:var  arr=[1,2,2,2,3,4,5,4,5,3,6]:可以用两层for循环或者其他方式进行去重 我在这里也给出一个方法吧: Array.prototy ...

  9. js 生成随机炫彩背景

    在浏览 https://ghost.org/xxxx/ 时. 可以使用 background-size: cover; 加上很小的像素图,放大后实现炫彩背景效果. 使用 js canvas 随机生成小 ...

  10. [Java]LeetCode133. 克隆图 | Clone Graph

    Clone an undirected graph. Each node in the graph contains a label and a list of its neighbors. OJ's ...