zoukankan      html  css  js  c++  java
  • bisect模块(使用二分法将数据按顺序插入一个列表)

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

     

     

    该模块主要有两个函数:

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

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

    1、insort_right

     1 insort_right(a, x, lo=0, hi=None)
     2 
     3 """
     4 
     5 通过二分法向列表中按从小到大的顺序插入数据。a为原始列表,x为插入数据,lo为二分法初始最左边的位置,hi为二分法初始最右边位置(None时会选择列表最后一个位置)
     6 
     7 以下为使用举例:
     8 
     9 """
    10 
    11 
    12 a = [1, 2, 3, 5, 7]
    13 
    14 x= 4
    15 
    16 insort_right(a, x, lo=0, hi=None)
    17 
    18 print(a)  ===>结果为:[1, 2, 3, 4, 5, 7]
     1 insort_left(a, x, lo=0, hi=None)
     2 
     3 """
     4 
     5 功能和insort_right一样,都是将x按从小到大顺序插入a! 
     6 
     7 不同的是left是每次是猜x应该在二分法的右边,不对的话再把范围缩小到左边;right是先猜x应该在二分法的左边,不对的话再把范围缩小到右边。
     8 
     9 (感觉从效率上这两种方法没有太大本质性的区别,所以用哪个都行)
    10 
    11 """

     

     2、bisect_right 

     1 bisect_right(a, x, lo=0, hi=None):
     2 
     3 """
     4 
     5 通过二分法查找出应该把X插入到列表a(从小到大排序的列表)中的哪个位置,并再该位置返回。注意这个是返回位置而不是插入数据。lo和hi作用同上
     6 
     7 以下为举例:
     8 
     9 """
    10 
    11 a = [1, 2, 3, 5, 7]
    12 
    13 x = 4
    14 
    15 print(bisect.bisect_right(a, x))   ===>此处打印3,即应插入的位置
    16 
    17 print(a)   ===>打印结果显示a还是原来的值[1, 2, 3, 5, 7]
     1 bisect_left(a, x, lo=0, hi=None):
     2 
     3 """
     4 
     5 功能和insort_right一样,都是将x按从小到大顺序插入a! 
     6 
     7 不同的是left是每次是猜x应该在二分法的右边,不对的话再把范围缩小到左边;right是先猜x应该在二分法的左边,不对的话再把范围缩小到右边。
     8 
     9 (感觉从效率上这两种方法没有太大本质性的区别,所以用哪个都行)
    10 
    11 """

     

  • 相关阅读:
    linux下文件结束符
    【转】跟我学Kafka之NIO通信机制
    【转】 详解Kafka生产者Producer配置
    【转】项目延期的⑦大因素
    (转)EOSIO开发(三)钱包、账户与账户权限之概念篇
    CentOS里alias命令
    (转)EOSIO开发(一)使用Docker构建本地环境
    Marathon自动扩缩容(marathon-lb-autoscale)
    (转)Springboot日志配置(超详细,推荐)
    Spring Boot下的lombok安装以及使用简介
  • 原文地址:https://www.cnblogs.com/baihualin/p/10710128.html
Copyright © 2011-2022 走看看