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. c#坐标系互相转换

    转自群友的博客:https://www.xiaofengyu.com/?p=108 群友的github地址:https://github.com/jfwangncs/GPSConvert  各种坐标系 ...

  2. Java_重载与重写

    在java中,重载与重写都是多态的体现.重载(Overload)体现的是编译时多态,而重写(Override)体现了运行时多态. 重载(Overload): 定义:在一个类中,同名的方法如果有不同的参 ...

  3. centos7防火墙配置

    一.在工作中远程连接经常通过堡垒机连接,不能直接开启防火墙.所以就需要写入配置文件中 编译配置文件   /etc/firewalld/zones/public.xml <?xml version ...

  4. boa调试

    Cannot access memory at address 0x0 0x400fc7e0 in ?? () 0 0x4014f0dc in wcscasecmp_l () from /lib/li ...

  5. Flutter

    2015年, Google 内部开始测试另一种高性能的编程方式,那就 Google 的 Sky 项目.Sky 项目使用网页开发语言Dart开发原生Android 应用,强调应用的运行速度和与 Web ...

  6. 使用bind提供域名解析服务搭建

    正向解析实验 1.安装bind服务 2.在/etc目录中找到该服务程序的主配置文件,然后把第11行和第17行的地址均修改为any 3.正向解析参数如下: 4.编辑数据配置文件,从/var/named目 ...

  7. 北大开源全新中文分词工具包:准确率远超THULAC、结巴分词

    最近,北大开源了一个中文分词工具包,它在多个分词数据集上都有非常高的分词准确率.其中广泛使用的结巴分词误差率高达 18.55% 和 20.42,而北大的 pkuseg 只有 3.25% 与 4.32% ...

  8. linux入门--Linux发行版本详解

    从技术上来说,李纳斯•托瓦兹开发的 Linux 只是一个内核.内核指的是一个提供设备驱动.文件系统.进程管理.网络通信等功能的系统软件,内核并不是一套完整的操作系统,它只是操作系统的核心.一些组织或厂 ...

  9. iFace安全专家揭秘:存放在区块链钱包中的比特币,其实已经早就不属于你……

    自MoreToken钱包跑路之后,2019年3月以来陆续多个钱包.交易所跑路,造成了大量用户账户被盗,仅MoreToken钱包用户损失总价值就达12.2亿人民币,用户损失惨重.为什么这么多钱包.交易所 ...

  10. PHP的Memcached简单实现

    Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.也可动态缓存一些实 ...