Python Bisect

简介: Python Bisect

bisect是python内置模块,用于有序序列的插入和查找


  • 查找: bisect(array, item)
  • import bisect
  • 若数组a是升序序列


使用总结:


bisect.bisect(a,c):返回数组a中最后一个<=c的索引值+1


若c存在于数组a,bisect.bisect_left(a,c)返回数组a中第一个出现c的索引值


若c不存在于数组a,bisect.bisect_left与bisect.bisect等效


若c存在于数组a,bisect.bisect_right(a,c)返回数组a中最后一个等于c的索引值+1


若c不存在于数组a,bisect.bisect_right与bisect.bisect等效


在查询一个有序的数组中有多少个>(<) c的时候,这个函数效率就很高


import bisect
n=int(input())
a=list(map(int,input().split()))
b=list(map(int,input().split()))
c=list(map(int,input().split()))
a.sort()
c.sort()
ans = 0
for i in range(n):
  x=bisect.bisect_left(a,b[i])
  y=len(c)-bisect.bisect_right(c,b[i])
  ans += x*y
print(ans)


image.png


这个代码是可以解决蓝桥杯一道真题:三元递增组,相较于用前缀和,代码量大大化简


前缀和代码:

n=int(input())
a=list(map(int,input().split()))
b=list(map(int,input().split()))
c=list(map(int,input().split()))
ans=[0 for i in range(max(a)+1)]
for i in a:
    ans[i]+=1
x=[0 for i in range(max(a)+1)]
x[0]=a.count(0)
for j in range(1,max(a)+1):
    x[j]=x[j-1]+ans[j]
cns=[0 for i in range(max(c)+1)]
for i in c:
    cns[i]+=1
y=[0 for i in range(max(c)+1)]
y[0]=c.count(0)
for j in range(1,max(c)+1):
    y[j]=y[j-1]+cns[j]
cnt=0
for k in range(n):
    if b[k]-1>len(x)-1:
        p=x[-1]
    elif b[k]-1<0:
        p=0
    else:
        p=x[b[k]-1]
    if len(y)-1<=b[k]:
        q=0
    else:
        q=y[-1]-y[b[k]]
    cnt+=p*q
print(cnt)


掌握一些内置的高效函数,大有裨益!


目录
相关文章
|
SQL 监控 安全
数据安全之认识数据库审计系统
随着企业业务数据量的不断增长和数据存储的集中化,数据库成为企业的核心资产之一。然而,数据库面临着各种安全威胁,如SQL注入、权限滥用、数据泄露等。为了保障数据库的安全性和完整性,企业需要采取有效的审计措施来监控和记录数据库的操作行为。本文让我们一起来认识数据库审计系统。
460 1
|
4月前
|
弹性计算 Ubuntu Linux
阿里云服务器镜像怎么选?公共、自定义、共享、云市场、社区镜像区别及选择指南
在我们选购阿里云服务器的过程中,精准挑选适配的镜像(也就是云服务器所搭载的操作系统)可以让我们快速部署自己的业务。阿里云服务器镜像体系丰富,主要包含公共镜像、自定义镜像、共享镜像、云市场镜像以及社区镜像这五大类别。本文对各类镜像的特性、区别展开深入且细致的剖析,并为新手用户提供详尽、实用的选择参考。
789 156
|
缓存 Linux Go
Dockerfile(11) - COPY 指令详解
Dockerfile(11) - COPY 指令详解
3245 0
|
8月前
|
缓存 监控 供应链
当当平台商品详情接口开发指南:从接入到实战
当当网开放平台提供商品详情接口(dangdang.item.get),支持获取图书商品的基础信息、价格、库存、多媒体等数据,适用于价格监控、库存管理、推荐系统等场景。开发者需注册账号、创建应用并申请接口权限,通过API调用实现商品数据获取与管理。
|
XML JavaScript 前端开发
Vue和React有什么区别
【8月更文挑战第28天】Vue和React有什么区别
1363 0
|
运维 监控 Linux
zabbix中SNMP (Simple Network Management Protocol)
zabbix中SNMP (Simple Network Management Protocol)
622 10
|
JavaScript 前端开发 Java
npm学习一:npm 包管理工具 学习、使用。
这篇文章是关于npm包管理工具的学习、使用指南,包括npm概述、基础命令和如何安装webpack。
509 3
npm学习一:npm 包管理工具 学习、使用。
|
SQL 数据库
数据审计 -本福德定律 Benford‘s law (sample database classicmodels _No.6)
数据审计 -本福德定律 Benford‘s law (sample database classicmodels _No.6)
439 1
|
前端开发 JavaScript UED
前端性能优化:打造流畅用户体验的秘诀
【10月更文挑战第20天】前端性能优化:打造流畅用户体验的秘诀
268 0
|
图形学 C# 开发者
Unity粒子系统全解析:从基础设置到高级编程技巧,教你轻松玩转绚丽多彩的视觉特效,打造震撼游戏画面的终极指南
【8月更文挑战第31天】粒子系统是Unity引擎的强大功能,可创建动态视觉效果,如火焰、爆炸等。本文介绍如何在Unity中使用粒子系统,并提供示例代码。首先创建粒子系统,然后调整Emission、Shape、Color over Lifetime等模块参数,实现所需效果。此外,还可通过C#脚本实现更复杂的粒子效果,增强游戏视觉冲击力和沉浸感。
1469 1

热门文章

最新文章