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

深圳网站设计服务公如何创建个人博客wordpress

深圳网站设计服务公,如何创建个人博客wordpress,搜索到的相关信息,怎么做网页链接文章Python bisect 库详细介绍 bisect 是 Python 标准库中的一个模块,提供了基于二分查找算法的工具,用于维护有序列表而不必每次插入后都重新排序。 核心功能 bisect 模块主要用于以下场景: 在有序列表中快速查找元素位置将元素插入到有序列表的…

Python bisect 库详细介绍

bisect 是 Python 标准库中的一个模块,提供了基于二分查找算法的工具,用于维护有序列表而不必每次插入后都重新排序。

核心功能

bisect 模块主要用于以下场景:

  • 在有序列表中快速查找元素位置
  • 将元素插入到有序列表的正确位置,保持列表有序

主要函数

查找函数

  1. bisect_left(a, x, lo=0, hi=len(a))
    • 在有序列表 a 中查找 x 的插入位置
    • 返回的位置使得 x 插入后,所有位于该位置左边的元素都 小于 x
    • 如果 x 已存在,则返回最左边的位置
  2. bisect_right(a, x, lo=0, hi=len(a)) (或简写为 bisect)
    • 类似 bisect_left,但当 x 存在时返回最右边的位置+1

插入函数

  1. insort_left(a, x, lo=0, hi=len(a))
    • x 插入到有序列表 a 中,保持顺序
    • x 存在时,插入到最左边
  2. insort_right(a, x, lo=0, hi=len(a)) (或简写为 insort)
    • 类似 insort_left,但当 x 存在时插入到最右边

使用示例

基本查找

import bisectdata = [1, 3, 5, 7, 9]# 查找不存在的元素
print(bisect.bisect_left(data, 4))  # 输出: 2
print(bisect.bisect_right(data, 4)) # 输出: 2# 查找存在的元素
print(bisect.bisect_left(data, 5))  # 输出: 2
print(bisect.bisect_right(data, 5)) # 输出: 3

元素插入

import bisectdata = [1, 3, 5, 7, 9]bisect.insort_left(data, 4)
print(data)  # 输出: [1, 3, 4, 5, 7, 9]bisect.insort_right(data, 5)
print(data)  # 输出: [1, 3, 4, 5, 5, 7, 9]

实际应用案例

案例1:成绩转换

import bisectdef grade(score, breakpoints=[60, 70, 80, 90], grades='FDCBA'):i = bisect.bisect(breakpoints, score)return grades[i]print(grade(65))  # D
print(grade(85))  # B
print(grade(95))  # A

案例2:区间查找

import bisectdef find_range(value, ranges):# ranges 应该是一个已排序的区间起点列表pos = bisect.bisect_right(ranges, value) - 1return pos if pos >= 0 else Noneranges = [0, 10, 20, 30, 40]
print(find_range(15, ranges))  # 输出: 1 (在10-20区间)

高级用法

处理自定义对象

import bisectclass Student:def __init__(self, name, score):self.name = nameself.score = scoredef __lt__(self, other):return self.score < other.scorestudents = [Student('Alice', 85),Student('Bob', 75),Student('Charlie', 90)
]
students.sort()  # 按分数排序# 查找插入位置
new_student = Student('David', 80)
pos = bisect.bisect_left(students, new_student)
students.insert(pos, new_student)for s in students:print(f"{s.name}: {s.score}")

使用 key 函数(Python 3.10+)

import bisectdata = [{'score': 65}, {'score': 75}, {'score': 85}]# 查找 score=80 应该插入的位置
pos = bisect.bisect_left(data, 80, key=lambda x: x['score'])
print(pos)  # 输出: 2

性能特点

  1. 查找效率:O(log n) 时间复杂度,比线性查找 O(n) 高效
  2. 插入效率:O(n) 时间复杂度,因为需要移动元素
  3. 适用场景
    • 列表基本有序,偶尔需要插入新元素
    • 需要频繁查找但相对较少插入的情况

注意事项

  1. 输入列表 必须是有序的,否则结果不可靠
  2. 对于自定义对象,需要确保实现了 __lt__() 方法
  3. Python 3.10+ 支持 key 参数,类似 list.sort()key 参数

bisect 模块是处理有序数据的利器,特别适合那些需要保持数据有序同时又需要高效查找的场景。

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

相关文章:

  • 国外网站网站wordpress技术教程
  • 网站建设 的公司哪家好提供app开发公司报价
  • 做网站自动上传文章网络技术推广服务
  • 网站建设与开发定制怎么做局域网网站
  • 3网站建设电子商务网站建设详细策划书
  • 《AI智脉速递》2025 年 9月22 日 - 10月7日
  • win7做本地网站360如何做免费的网站
  • 石碣东莞网站建设wordpress 站群
  • 中交通力建设股份有限公司网站南京时事重大新闻
  • 网站网站建设考虑要素域名查询官网入口
  • 网站的内容更新网站的开发工具和运行环境
  • 免费app制作网站网页升级紧急通知在线
  • ArrayList 在序列化时的重写重写了 writeObject()特殊处理的原因
  • 南山做网站推广乐云seo买一个普通商标多少钱
  • 江西新农村建设权威网站在那可以做公司网站
  • 购物网站的设计头像制作免费生成器
  • 怎么做ppt教程网站网页设计登录注册页面代码
  • 【51单片机】【protues仿真】基于51单片机贪吃蛇游戏系统
  • 昆明学校网站设计公司网页设计项目模板代码
  • 有没有做培养基的网站已备案网站想关闭
  • 【Canvas与旗帜】油管五常之印度旗恒河之眼版
  • 广州门户网站开发济南seo优化外包
  • 微网站样式wordpress 插件编写
  • Oracle数据库常见问题实战:从连接错误到自动清理空闲会话
  • 网站开发项目管理步骤如何做国外的网站
  • 建设银行潍坊支行网站wordpress博客二次元
  • html5网站开发特点wordpress导出导入
  • 个人博客网站总结全网营销解决方案
  • 域名注册好后怎么建设网站官网浏览器
  • Smac Planner与 NavFn Planner 的对比分析