二进制堆优先级队列

bhpq的Python项目详细描述


HitCountGitHub contributorsVersionLicenseBuild StatusDownloads

bhpq-二进制堆优先级队列

二进制堆优先级队列实现,线程安全

安装

您可以从PyPI

安装bhpq
pip install bhpq

python 3.7支持bhpq

用法

from bhpq import BinaryHeapPriorityQueue

# The BinaryHeapPriorityQueue constructor takes two input params:

# - prefer (required param)
#    the preferred object is pushed to the top of the queue
# the prefer input is a lambda function eg:
# prefer=(lambda lhs, rhs: lhs if lhs.val >= rhs.val else rhs)

# - size
#    The initial size allocation of the queue, default value is 10

示例

class Node(object):
def __init__(self, val):
    self.val = val

A = BinaryHeapPriorityQueue(
        prefer=(lambda lhs, rhs: lhs if lhs.val >= rhs.val else rhs), size=5
    )

A.add(Node(1))
A.add(Node(4))
A.add(Node(3))
A.add(Node(5))
A.add(Node(2))

assert 5 == A.pop().val
assert 4 == A.pop().val
assert 3 == A.pop().val
assert 2 == A.pop().val
assert 1 == A.pop().val
assert None == A.pop()

方法

  • size()

返回优先级队列的当前大小

  • peek()

返回优先级队列顶部的对象,如果存在,则返回No.<

  • pop()

如果存在优先级,则移除并返回优先级队列顶部的对象,否则返回NO/

  • add(val)

将元素添加到优先级队列

维护人员

Aayush Uppal

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
二维数组的java置换   eclipse如何在java中提供读取文件的相对地址   java将嵌套文档添加到嵌套文档数组中   java为什么要删除。导致maven编译错误的目录?   java Weave AspectJ方面依赖于约束注释   java如何在listview中选择后自动播放视频序列?   JavaEEWeb应用程序与Web服务   JavaSpringWebFlow提交包含新项的数组   java Try and Catch with JOption无法按预期工作   java如何使用导航抽屉中的字符串链接本地HTML页面?   java如何确保关闭文件   这能在一个Mac桌面应用程序中使用Java后端提供的ObjectiveC UI吗?   protobuf生成的代码导致的java Eclipse构建循环(与Maven Project Builder相关)   java JPA onetomany过滤   java实体管理器批量更新提供了组织。冬眠PersistentObjectException:传递给persist的分离实体   macos java。lang.RuntimeException:无法启动Selenium会话:   java Glide转换选择墙纸的位置?   java(在实体上使用@ConditionalOnProperty的变通方法)   Android系列。对java进行排序。lang.NullPointerException