电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Python實現從N個數中找到最大的K個數

瀏覽:5日期:2022-07-31 11:34:50

提出問題:

如何在某集合里面找出最大或最小的K個元素。

解決思路:

找出最大或最下的K個元素,可以使用Python庫中的heapq模塊,該模塊提供兩個函數nlargest()求最大K個和nsmallest()求最小K個。

下面我們舉例說明:

import heapqnums=[12,-9,-3,32,9,56,23,0,11,34]print(heapq.nlargest(4,nums)) #-->最大的4個print(heapq.nsmallest(4,nums)) #-->最小的4個

運行結果:

[56, 34, 32, 23][-9, -3, 0, 9]

分析下,nlargest()和nsmallest()函數有兩個參數,第一個參數是求最大或最下的K個元素,第二個參數是待查詢的集合。除此之外,他們也可以接受一個參數key,這使得他們處理更加復雜的數據結構。例如:

import heapqportfolio = [{’name’: ’IBM’, ’shares’: 100, ’price’: 91.1},{’name’: ’AAPL’, ’shares’: 50, ’price’: 543.22},{’name’: ’FB’, ’shares’: 200, ’price’: 21.09},{’name’: ’HPQ’, ’shares’: 35, ’price’: 31.75},{’name’: ’YHOO’, ’shares’: 45, ’price’: 16.35},{’name’: ’ACME’, ’shares’: 75, ’price’: 115.65}]cheap = heapq.nsmallest(3, portfolio, key=lambda s: s[’price’])print(cheap)expensive = heapq.nlargest(3, portfolio, key=lambda s: s[’price’])print(expensive)

運行結果:

[{’name’: ’YHOO’, ’shares’: 45, ’price’: 16.35}, {’name’: ’FB’, ’shares’: 200, ’price’: 21.09}, {’name’: ’HPQ’, ’shares’: 35, ’price’: 31.75}][{’name’: ’AAPL’, ’shares’: 50, ’price’: 543.22}, {’name’: ’ACME’, ’shares’: 75, ’price’: 115.65}, {’name’: ’IBM’, ’shares’: 100, ’price’: 91.1}]

深入討論:

假如說,我們正在尋找某集合中最大或最下的K個元素,并且N的數值很小,如果再使用上面的方法,可能就不是最好的選擇。那么,我們介紹heapify()函數,這個函數首先會在底層將數據轉換成列表,并且元素會以堆的順序排列。舉例:

Python實現從N個數中找到最大的K個數

從上面的代碼中,我們看出元素確實是以堆的順序排列的,同時堆hea_num[0]對應的元素-9總是最小的。在heapq()模塊中還提供heappop()函數,該方法會把第一個元素(最小的)給彈出來,然后第二小的元素會自動補位,它的操作時間復雜度是O(log N),其中N代表的是堆的大小。

具體的操作看下面的代碼:

Python實現從N個數中找到最大的K個數

總結一下:

當要查找的元素數量比較少的時,適合使用nlargest()和nsmallest()

當只查找集合中最大或最小的1個元素時,推薦使用min()和max()

當N和集合本身大小差不多時,應該是先對集合排序,然后做切片操作(比如:sorted(items)[:N]或sorted(items)[-N:])

補充知識:python三個數從小到大排序

Python實現從N個數中找到最大的K個數

python三個數從小到大排序

1、首先定義一個函數paiLie();然后在paiLie函數內使用for循環和input獲取三個數字并存入列表;最后調用列表的sort()方法進行排序即可。

def paiLie(): result = [] for i in range(3): x = input('請輸入數字:') result.append(x) result.sort() print result

2、調用

paiLie()請輸入數字:56請輸入數字:5請輸入數字:89

運行結果:

[5, 56, 89]

以上這篇Python實現從N個數中找到最大的K個數就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 校园文化空间设计-数字化|中医文化空间设计-党建|法治廉政主题文化空间施工-山东锐尚文化传播公司 | 广东护栏厂家-广州护栏网厂家-广东省安麦斯交通设施有限公司 | 广东佛电电器有限公司|防雷开关|故障电弧断路器|智能量测断路器 广东西屋电气有限公司-广东西屋电气有限公司 | 交通气象站_能见度检测仪_路面状况监测站- 天合环境科技 | 桨叶搅拌机_螺旋挤压/方盒旋切造粒机厂家-无锡市鸿诚输送机械有限公司 | 道达尔润滑油-食品级润滑油-道达尔导热油-合成导热油,深圳道达尔代理商合-深圳浩方正大官网 | 制丸机,小型中药制丸机,全自动制丸机价格-甘肃恒跃制药设备有限公司 | 钢托盘,铁托盘,钢制托盘,镀锌托盘,饲料托盘,钢托盘制造商-南京飞天金属13260753852 | 网站制作优化_网站SEO推广解决方案-无锡首宸信息科技公司 | 直流电能表-充电桩电能表-导轨式电能表-智能电能表-浙江科为电气有限公司 | 铝机箱_铝外壳加工_铝外壳厂家_CNC散热器加工-惠州市铂源五金制品有限公司 | 无线遥控更衣吊篮_IC卡更衣吊篮_电动更衣吊篮配件_煤矿更衣吊篮-力得电子 | 驾驶人在线_专业学车门户网站 | 天津力值检测-天津管道检测-天津天诚工程检测技术有限公司 | 成都亚克力制品,PVC板,双色板雕刻加工,亚克力门牌,亚克力标牌,水晶字雕刻制作-零贰捌广告 | 上海宿田自动化设备有限公司-双面/平面/单面贴标机 | 胃口福饺子加盟官网_新鲜现包饺子云吞加盟 - 【胃口福唯一官网】 | 邢台人才网_邢台招聘网_邢台123招聘【智达人才网】 | 焊接烟尘净化器__焊烟除尘设备_打磨工作台_喷漆废气治理设备 -催化燃烧设备 _天津路博蓝天环保科技有限公司 | 模温机-油温机-电加热导热油炉-工业冷水机「欧诺智能」 | 山东柳店新能源科技有限公司 | 塑料异型材_PVC异型材_封边条生产厂家_PC灯罩_防撞扶手_医院扶手价格_东莞市怡美塑胶制品有限公司 | 示波器高压差分探头-国产电流探头厂家-南京桑润斯电子科技有限公司 | 展厅设计公司,展厅公司,展厅设计,展厅施工,展厅装修,企业展厅,展馆设计公司-深圳广州展厅设计公司 | 葡萄酒灌装机-食用油灌装机-液体肥灌装设备厂家_青州惠联灌装机械 | 江西自考网-江西自学考试网| 超声波焊接机,振动摩擦焊接机,激光塑料焊接机,超声波焊接模具工装-德召尼克(常州)焊接科技有限公司 | 连栋温室大棚建造厂家-智能玻璃温室-薄膜温室_青州市亿诚农业科技 | 立式壁挂广告机厂家-红外电容触摸一体机价格-华邦瀛 | 东莞画册设计_logo/vi设计_品牌包装设计 - 华略品牌设计公司 | 小型数控车床-数控车床厂家-双头数控车床 | 防伪溯源|防窜货|微信二维码营销|兆信_行业内领先的防伪防窜货数字化营销解决方案供应商 | 电脑知识|软件|系统|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网 | 楼承板-开闭口楼承板-无锡海逵楼承板 | 生物颗粒燃烧机-生物质燃烧机-热风炉-生物颗粒蒸汽发生器-丽水市久凯能源设备有限公司 | 信阳市建筑勘察设计研究院有限公司 | 石油/泥浆/不锈钢防腐/砂泵/抽砂泵/砂砾泵/吸砂泵/压滤机泵 - 专业石油环保专用泵厂家 | 分光色差仪,测色仪,反透射灯箱,爱色丽分光光度仪,美能达色差仪维修_苏州欣美和仪器有限公司 | 微信聊天记录恢复_手机短信删除怎么恢复_通讯录恢复软件下载-快易数据恢复 | 变色龙PPT-国内原创PPT模板交易平台 - PPT贰零 - 西安聚讯网络科技有限公司 | 股指期货-期货开户-交易手续费佣金加1分-保证金低-期货公司排名靠前-万利信息开户 |