当前位置: 首页 > news >正文

Python bisect

bisect”这个词在编程里通常指 二分查找(binary search)二分插入 的操作,在 Python 中有一个官方模块叫 bisect,专门用来处理有序列表。


1. 基本概念

bisect 的意思是“把东西二分”,在编程中主要用于在有序列表中快速定位某个值的位置

特点:

  • 输入的列表必须是有序的
  • 查找或插入的复杂度是 O(log n),比线性查找快很多(O(n))。

2. Python 的 bisect 模块

Python 内置的 bisect 模块主要有两个常用函数:

import bisect# bisect.bisect_left(list, x)
# 返回 x 应该插入 list 的左侧位置,使列表仍保持有序# bisect.bisect_right(list, x) 或 bisect.bisect(list, x)
# 返回 x 应该插入 list 的右侧位置
示例:
import bisectarr = [1, 3, 4, 4, 5, 7]# 找到 4 应插入的位置
pos_left = bisect.bisect_left(arr, 4)   # 返回 2(插入到第一个 4 的左边)
pos_right = bisect.bisect_right(arr, 4) # 返回 4(插入到最后一个 4 的右边)print(pos_left, pos_right)  # 输出: 2 4

3. 插入操作

bisect 模块还有一个方便的函数 insort,可以直接把元素插入列表中,同时保持列表有序:

import bisectarr = [1, 3, 4, 4, 5, 7]bisect.insort(arr, 4)  # 默认使用右侧插入
print(arr)  # 输出: [1, 3, 4, 4, 4, 5, 7]

总结

  • bisect = 二分查找/二分插入
  • 常用于 有序数组中快速定位位置
  • 优点是 O(log n) 的查找效率
  • Python 提供 bisect 模块封装了查找和插入操作

http://www.dtcms.com/a/424541.html

相关文章:

  • Docker 安装与核心知识总结
  • 编辑网站化妆品网页设计素材
  • 做视频网站的技能可以自己制作广告的软件
  • Jupyter Notebook下载安装使用教程(附安装包,图文并茂)
  • 《算法与数据结构》第七章[算法2]:广度优先搜索(BFS)
  • Salesforce 知识点:Connected App
  • 通用系统资源监控命令(Linux)
  • 衡水网站建设知识企业站系统
  • 做房产网站用什么软件亚马逊雨林的资料
  • airsim多无人机+无人车联合仿真辅导
  • 深度学习:池化(Pooling)
  • 亚圣信息科技做网站怎么样社交网站 cms
  • ftp网站目录做旅行同业的网站
  • 9.3 堆排序(排序(上))
  • 怎么向企业推销网站建设外国网站域名
  • gradle task build 渠道包
  • 【Java】P9 面向对象编程完全指南(S1-2 基础篇 深入理解Java方法的四个重要概念)
  • 网站如何做移动适配网站的推广是怎么做的
  • almalinux MySQL8.0安装
  • python做网站建e全景效果图
  • 网站建设费可以抵扣么推广网上国网有什么好处
  • 【APK安全】WebView组件的安全风险与防御指南
  • 秦皇岛网站定制哪家好厦门市建设局网站咨询电话
  • 是阿里巴巴好还是自己做网站好?wordpress nginx配置伪静态
  • 夫妻工作室网站建设枣庄网站seo
  • 【Android】一个demo理解dispatchTouchEvent、onInterceptTouchEvent与onTouchEvent
  • 十大网站平台重写Wordpress的js
  • HBase全量+增量迁移import/export方式
  • 精准交易:如何利用期权对冲你的头寸
  • 金华网站建设哪个公司好点烟台互联网公司有哪些