当前位置:   article > 正文

Python bisect模块的使用与源码分析_python bisect 源码

python bisect 源码


本文基于Python3.7分析

1. 模块简介

  • bisect模块属于Python内置模块
  • 内部核心算法是二分法
  • 用于操作的列表必须是升序的(空列表也可以)
  • 功能: 在保证原有顺序的情况下, 插入一个元素(或返回元素如果插入的下标值),不影响原有顺序

2. 源码分析及使用

2.1. 方法概述

bisect提供了六个方法:

  • 查找: 返回元素按照顺序应该插入的位置, 但不会修改原列表
    方法 解释
    bisect.bisect() 遇到重复值时,按照最右边返回
    bisect.bisect_left() 遇到重复值时,按照最左边返回
    bisect.bisect_right() 遇到重复值时,按照最右边返回
  • 插入: 将元素插入到列表中, 不影响原有顺序
    方法 解释
    bisect.insort() 遇到重复值, 插入到最右边
    bisect.insort_left() 遇到重复值, 插入到最左边
    bisect.insort_right() 遇到重复值, 插入到最右边

不难发现, bisect()方法和bisect_right()方法以及insort()方法和insort_right()方法功能一致, 在下面源码分析中会有解释

2.2. 使用

import bisect

l = [1, 2, 4, 4, 5]
n = 4

idx1 = bisect.bisect(l, n)
print(idx1)
# 4

idx2 = bisect.bisect_left(l, n)
print(
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/177471?site
推荐阅读
相关标签
  

闽ICP备14008679号