python bisect学习


官网链接https://docs.python.org/zh-cn/3/library/bisect.html#module-bisect

1. bisect.bisect_left

所返回的是插入点的索引,以下图片来自官网:
在这里插入图片描述

1.1 x已经在a里存在

a = [1,2,3,4]
x = 4
bisect.bisect_left(a,x)
# 插入点的索引在原来4的左边,此时原来4的索引变为5
Out[38]: 3

a.insert(3,x)
a
Out[41]: [1, 2, 3, 4, 4]

1.2 x不存在a里

a = [1,2,3,5]
x = 4
bisect.bisect_left(a, x)
Out[44]: 3

1.3 查找的例子

官网给的查找例子

def index(a, x):
    'Locate the leftmost value exactly equal to x'
    i = bisect_left(a, x)
    if i != len(a) and a[i] == x:
        return i
    raise ValueError

自己写的例子:

a = [1,2,3,4]
x = 5
# 从结果可以看出来,使用此函数如果不判断,会查找除出错误的结果
bisect.bisect_left(a, x)
Out[50]: 4

# 可采用此种方式判断,也可采用官网写的例子
if x in a:
    print(bisect.bisect_left(a, x))
else:
    print("x不存在a中")
    
x不存在a中

2. bisect.bisect_right

返回的插入点是 a 中已存在元素 x 的右侧。

a = [1,2,3,4]
x = 4
bisect.bisect_right(a, x)
Out[54]: 4

a = [1,2,3,4]
x = 5
bisect.bisect_right(a, x)
Out[60]: 4

3. bisect.bisect

以下图片来自官网,bisect.bisect同bisect.bisect_right函数,返回的插入点是 a 中已存在元素 x 的右侧。
在这里插入图片描述

a = [1,2,3,4]
x = 4
bisect.bisect(a, x)
Out[57]: 4
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值