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. libevent入门介绍

    libevent是之前看到的一个别人推荐的清凉级网络库,我就想了解一下它.今天下载到了一个人写的剖析系列,从结构和源码方面进行了简要分析.只是这个分析文章是2010年的,有点过时了(跟现在的libev ...

  2. 818C.soft thief

    Yet another round on DecoForces is coming! Grandpa Maks wanted to participate in it but someone has ...

  3. socket 套接字服务器端和客户端发送信息

    import socket import threading host='' port=6889 def cilenThred(conn,addr): print("成功接受客户端{}的连接 ...

  4. ndk编译libx264生成库

    编译脚本如下: TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64 function build_x26 ...

  5. 企业IT管理员IE11升级指南【14】—— IE11代理服务器配置

    企业IT管理员IE11升级指南 系列: [1]—— Internet Explorer 11增强保护模式 (EPM) 介绍 [2]—— Internet Explorer 11 对Adobe Flas ...

  6. vs2017开发Node.js控制台程序

    1,新建项目  NodejsConsoleApp1 2,在项目的根目录下,添加 sayModule.js 文件 //sayModule.js function Say1Module() { this. ...

  7. web项目 easyui-datagrid开发实践

    一,引言 工作的需要,做了3年的wpf(mvvm)……,又因为项目的需求,回归到web的开发. ■  3 years ago,vue是我三年前没用过的玩意儿. ■  3 years ago,boots ...

  8. Kali学习笔记43:SQL盲注

    前面的文章都是基于目标会返回错误信息的情况进行判断是否存在SQL注入 我们可以轻易根据数据库报错信息来猜测SQL语句和注入方式 如果程序员做得比较好,不显示错误信息,这种情况下得SQL注入称为SQL盲 ...

  9. [Swift]LeetCode303. 区域和检索 - 数组不可变 | Range Sum Query - Immutable

    Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inclusive ...

  10. mysql+postgresql备份与恢复

    mysql备份一个库, mysqldump  -u用户名 -p密码 [选项] [数据库名] > /备份路径/备份文件名 mysqldump -uuser -p123123 auth > / ...