首页 > 编程语言 >python 大根堆

python 大根堆

时间:2023-06-25 12:13:20浏览次数:64  
标签:24 大根堆 heapq 堆化 python print data

python默认的都是小根堆,实现数字的大根堆,可在堆化前把数字 乘以 -1 ,输出时 再 乘以 -1 变回原值。

比如: [5, 20, 6],堆化前用列表推导式把列表转为: [-5, -20, -6]

import heapq
import random

data = list(range(1,30))
random.shuffle(data)  # 打乱顺序
data = data[:12]  # 取12个数字  [17, 14, 29, 1, 2, 7, 25, 15, 11, 24, 16, 22]
data_b = [-i for i in data]  # 变为相反数,模拟大根堆

heapq.heapify(data)  # 堆化 小跟堆
print(heapq.nlargest(3, data))  # [29, 25, 24] 输出三个最大值
for i in range(12):
    print(heapq.heappop(data), end='\t')
    # 1	2	7	11	14	15	16	17	22	24	25	29
print()

heapq.heapify(data_b)  # 堆化 大根堆
for i in range(12):
    print(-heapq.heappop(data_b), end='\t')  # 输出相反数
    # 29	25	24	22	17	16	15	14	11	7	2	1
print()

  

标签:24,大根堆,heapq,堆化,python,print,data
From: https://www.cnblogs.com/sangern/p/17502589.html

相关文章

  • 基于k6和python进行自动化性能测试
    摘要:在性能测试中,达到相应的性能指标对于一个软件来说十分重要,在本文中,将介绍一种现代化性能测试工具k6。本文分享自华为云社区《基于k6和python进行自动化性能测试》,作者:风做了云的梦。当我们开发完成一个应用程序时,往往需要对其进行性能测试,以帮助我们更好的优化程序以及发现......
  • pytest + yaml 框架 -41.postman 和 python代码也能录制成用例
    前言python代码和postman写的接口也能通过录制功能自动生成yaml格式用例了。python代码运行后自动录制环境准备参考前面一篇https://www.cnblogs.com/yoyoketang/p/17495374.html在项目本地新建一个recorde.py,名称随便定义frompytest_yaml_yoyo.mitm_httpimportRecode......
  • Python生成简短的唯一ID
    GUID生成的ID太长,不方便使用,我想生成一个短的,最好不要有特殊字符,另外,只在本机使用,不跨网络,所以我使用当前时间作为生成的ID,为了使生成的ID更短一些,对它进行重新编码;另外,为防止短时间内有重复的ID,记录上次生成的ID并进行重复判断.代码如下:defGenerateI......
  • python测试
      importosimportshutildefcheck_dir_exist(dir):#如果目标路径不存在原文件夹的话就创建ifnotos.path.exists(dir):os.makedirs(dir)defremove_dir(dir):#如果目标路径存在原文件夹的话就先删除ifos.path.exists(dir......
  • 深入Python网络编程:从基础到实践
    Python,作为一种被广泛使用的高级编程语言,拥有许多优势,其中之一就是它的网络编程能力。Python的强大网络库如socket,requests,urllib,asyncio,等等,让它在网络编程中表现优秀。本文将深入探讨Python在网络编程中的应用,包括了基础的socket编程,到高级的异步IO网络编程,以及我们如何......
  • Python的异步
    SimpleDemo错误示范code:importasyncioasyncdeftest(id):print(id,"开始执行")awaitasyncio.sleep(5)print(id,"执行结束")asyncio.run(test(1))asyncio.run(test(2))output:1开始执行1执行结束2开始执行2执行结束这样是不支持异步的,原......
  • Python3 configparser读取含有中文配置config.ini(Windows)显示乱码的解决方法
    最近在配置文件config.ini有中文输出时,python3打印出来显示乱码。初步判断是由于编码问题。在Python3中虽有encoding参数,但是对于有BOM(如Windows下用记事本指定为utf-8)的文件,需要使用utf-8-sig,使用utf-8没办法。配置文件config.ini如下:[TABLEDATA]project_name......
  • 笔记本输入python无提示、也无报错(不提示“不是内部或外部命令,也不是可运行的程序”)
    最近在安装Python的时候发生了很奇怪的现象(安装前):从命令行执行python并不会输出python版本信息,似乎也没有其他反应,也无报错(不提示“不是内部或外部命令,也不是可运行的程序”),再次输入命令wherepython显示C:\Users\quxw\AppData\Local\Microsoft\WindowsApps\python.exe,如下......
  • requests Python中最好用的网络请求工具 基础速记+最佳实践
    简介requests模块是写python脚本使用频率最高的模块之一。很多人写python第一个使用的模块就是requests,因为它可以做网络爬虫。不仅写爬虫方便,在日常的开发中更是少不了requests的使用。如调用后端接口,上传文件,查询数据库等。本篇详细介绍requests的使用。requests是⽤Python......
  • python篇-kivy-kv
    1,Label  遗留问题:加上 markup:True之后,文本不显示了  解决方法:把text_size和color属性注释掉就出现了kivytest.py#coding:utf-8fromkivy.appimportAppfromkivy.uix.floatlayoutimportFloatLayoutfromkivy.uix.labelimportLabelclassKvTest(FloatLa......