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. java代码的编译、执行过程

    Java代码编译是由Java源码编译器来完成,流程图如下所示: Java字节码的执行是由JVM执行引擎来完成,流程图如下所示: Java代码编译和执行的整个过程包含了以下三个重要的机制: Java源码 ...

  2. Nginx如何进行配置优化?

    在日常工作的时候,搭建配置Nginx的时候,我们都会做相应的优化,那一般需要做的配置优化有哪些呢?可能有些小伙伴一听到要进行优化,内心难免有些慌. 今天咱们聊聊Nginx进行常规配置优化,这里需要注意 ...

  3. Java GC相关知识

    Java堆的分类 分为两类:YoungGen和OldGen.其中,YoungGen分为三部分:eden,from survivor和to survivor,比例默认是:8:1:1 PermGen不属于 ...

  4. f12 headers 变字典快捷方式

  5. 3-1.Hadoop单机模式安装

    Hadoop单机模式安装 一.实验介绍 1.1 实验内容 hadoop三种安装模式介绍 hadoop单机模式安装 测试安装 1.2 实验知识点 下载解压/环境变量配置 Linux/shell 测试Wo ...

  6. 【RL-TCPnet网络教程】第36章 RL-TCPnet之FTP服务器

    第36章      RL-TCPnet之FTP服务器 本章节为大家讲解RL-TCPnet的FTP服务器应用,学习本章节前,务必要优先学习第35章的FTP基础知识.有了这些基础知识之后,再搞本章节会有事 ...

  7. [Swift]LeetCode96. 不同的二叉搜索树 | Unique Binary Search Trees

    Given n, how many structurally unique BST's (binary search trees) that store values 1 ... n? Example ...

  8. [Swift]LeetCode789. 逃脱阻碍者 | Escape The Ghosts

    You are playing a simplified Pacman game. You start at the point (0, 0), and your destination is (ta ...

  9. Kubernetes---Pod控制器

    Pod作为kubernetes的最基本单元,它的控制器有以下这些 Pod的控制器: 1,  RC ( ReplicationController): 2, RS(ReplicaSet) : 3, De ...

  10. python爬虫数据解析之正则表达式

    爬虫的一般分为四步,第二个步骤就是对爬取的数据进行解析. python爬虫一般使用三种解析方式,一正则表达式,二xpath,三BeautifulSoup. 这篇博客主要记录下正则表达式的使用. 正则表 ...