首页 > 编程语言 >Python - Java vs Python对比

Python - Java vs Python对比

时间:2023-06-17 23:55:25浏览次数:57  
标签:heapq Java Python 元素 num vs heap

 

工具类

最大堆,最小堆

Java - PriorityQueue<T>

https://www.cnblogs.com/frankcui/p/12125210.html#_label23

 

Python - heapq库

https://blog.csdn.net/wangws_sb/article/details/124108070 

注意:python中的heapq库只有最小堆,没有最大堆,当使用最大堆时,可以在插入元素时将元素取反,弹出是也取反。

常见API:

import heapq
# [2,0,4,1]
 
# 1.创建堆
# 方法一:定义一个空列表,然后使用heapq.heqppush(item)函数把元素加入到堆中
item = 2
heap = []
heapq.heappush(heap,item)
# 方法二:使用heapq.heapify(list)将列表转换为堆结构
heap = [2,0,4,1]
heapq.heapify(heap)
 
# 2.heapq.heappush() 添加新元素 num
num = 3
heapq.heappush(heap,num)
 
# 3.heapq.heappop() 删除并返回堆顶元素
heapq.heappop(heap)
 
# 4.heapq.heappushpop() 比较添加元素num与堆顶元素的大小:如果num>堆顶元素,删除并返回堆顶元素,然后添加新元素num;如果num<堆顶元素,返回num,原堆不变
# 其实也就等价于 添加新元素num,然后删除并返回堆顶元素
num = 0
heapq.heappushpop(heap,num)
 
# 5.heapq.heapreplace() 删除并返回堆顶元素,然后添加新元素num
num = 5
heapq.heapreplace(heap,num)
 
# 6. heapq.merge() 合并多个排序后的序列成一个排序后的序列, 返回排序后的值的迭代器。
heap1 = [1,3,5,7]
heap2 = [2,4,6,8]
heap = heapq.merge(heap1,heap2)
print(list(heap))
 
# 7.heapq.nsmallest() 查询堆中的最小n个元素
n = 3
heap = [1,3,5,7,2,4,6,8]
print(heapq.nsmallest(n,heap)) # [1,2,3]
 
# 8.heapq.nlargest() 查询堆中的最大n个元素
n = 3
heap = [1,3,5,7,2,4,6,8]
print(heapq.nlargest(n,heap)) # [8,7,6]

 

标签:heapq,Java,Python,元素,num,vs,heap
From: https://www.cnblogs.com/frankcui/p/17488526.html

相关文章

  • 【Python 随练】一个整数,它加上 100 后是一个完全平方数,再加上 168 又是一个完全平方
    题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?简介:在本篇博客中,我们将解决一个数学问题:找到满足一定条件的整数。我们将提供问题的解析,并给出一个完整的代码示例来找出符合条件的整数。问题分析:我们需要找到一个整数,它加上100后是一个......
  • 【Python 随练】企业奖金计算器
    题目:企业发放的奖金根据利润提成。利润:低于或等于10万元时,奖金可提10%;高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时,高于40万元的部分,可提成3%;60万到100万之间......
  • [rk3568]buildroot增加python ifcfg
    ifcfg·PyPI以上是包路径 Config.inconfigBR2_PACKAGE_PYTHON_IFCFG bool"python-ifcfg" help ifcfgisaparsingtoolkitforPython,builtwithafocus onergonomics,performanceandmodularity. https://github.com/ifcfg/ifcfgpython-ifcfg.hash......
  • Python自动化测试基础必备知识点总结
    一、自动化测试的概念性能系统负载能力稳定性过载操作下的系统瓶颈自动化测试,使用程序代替人工,可以提高测试效率性,自动化测试能自动化使用代码模拟大量用户,让用户请求多页和多用户并发请求收集参数,并对系统负载能力进行统计生成报告。二、Python自动化测试基础必备知识点1.Pyth......
  • java 如何实现控制台打印sql语句
    springboot项目打印sql语句2019.9.27首先我们看一下效果现在直接上代码:logback-spring.xml文件<configuration><!--%m输出的信息,%p日志级别,%t线程名,%d日期,%c类的全名,%i索引【从数字0开始递增】,,,--><!--appender是configuration的子节点,是负责......
  • java web模板学习
    经过建民老师几次测验我发现我是真写不完那个web系统项目,然后如果真的打分的话,不会很高。所以接下来时间我要学习一些javaweb模板。这个模板吧主要是基于springboot的系统模板。我学习一下,等下次测验就可以快点。......
  • Java_Base1之idea的使用
    准备工作:1、编码集file->settings->Editor->Fileencodingsprojectencodingutf-8Defaultencodingforpropertiesfilesutf-8并勾上后面2、jdkfile->projectstructure->project->projectsdk填写自己的jdk路径3、字体file->settings->Editor......
  • Java 注释及Dos命令
    Java注释、绝对路径、相对路径、基本Dos命令1.Java的三种注释方式注释能增加代码的可读性,习惯写注释能提升我们编写代码的能力单行注释:用//注释一些代码提示多行注释:以/*为开头以*/为结束文档注释:/**@authorxxx*@version1.0*/用javadoc来生成文本注释,javadoc......
  • Java_Base7之接口和抽象类、集合类ArrayList、HashSet、HashMap
    一、接口和抽象类(了解)接口:规则,规范行为。只能有抽象方法,一个类可以同时实现多个接口,必须重写所有抽象方法。 接口与接口是继承,接口与类是实现。接口是对继承的补充。 interfaceimplements定义一个接口publicinterfaceInter{ //默认修饰符publicabstract可以省略 pu......
  • Java_Base4之多态、api使用、字符串方法学习
    一、多态Polymorphism少写代码概念:用父类的类型来接收子类的对象先决条件: 继承/接口实现 父类类型接收子类对象 //实现扩展性优点: 扩展性强,解决了代码复用,降低类型耦合度 可以少定义变量,少些重复代码。 案例:一个方法接受不同的子类类型。缺点: 不能使用子类特有方法 ......