heapqモジュール
heapq --nlargestモジュールは、2つの機能を有しており、リストnsmallestを見つけることができ、祖先、および他のデータ構造は、最大又はn個の要素の最小セット、のリストを返します
インポートheapqの NUMS = {1、8、9、41、5、6、-5、21、42、37、2} #1 NUMS = [1、8、9、41、5、6、-5、21、42 、37、2] #1 NUMS =(1、8、9、41、5、6、-5、21、42、37、2) 印刷(heapq.nlargest(3、NUMS)) プリント(heapq.nsmallest(3 、NUMS))
結果
[42、41、37] [-5、1、2]
これらの2つの機能は、それらをより複雑なデータ構造で作業できるように、パラメータのキーを受け入れます
インポートheapqの ポートフォリオ= [ { '名前': '日'、 '年齢':25 '賃金':100}、 { '名前': '明'、 '年齢':10、 '賃金':55}、 { '名前': 'サン'、 '年齢':32、 '賃金':321.5}、 { '名前': 'SI'、 '年齢' 28、 '賃金':222.2}、 { '名前':「ウー」、 '年齢':43 '賃金':256} ] 安い= heapq.nsmallest(3、ポートフォリオ、キー=ラムダS:S [ '賃金']) 高価= heapq.nlargest(3、ポートフォリオ、キー=ラムダS:S [ '賃金']) プリント(安い) プリント(高価な)
結果
[{ '年齢':10、 '名称': '明'、 '賃金':55}、{ '年齢':25、 '名称': '日'、 '賃金':100}、{ '年齢': 28、 '名称': 'SI'、 '賃金':222.2}] [{ '年齢':32、 '名称': 'サン'、 '賃金':321.5}、{ '年齢':43、 'name'の: '呉'、 '賃金':256}、{ '年齢':28、 '名称': 'SI'、 '賃金':222.2}]
データ構造要素と比較して最大またはn個の要素の最小値、および探して、nが小さい場合は、上記の方法の性能は、我々は、スタックを使用することができ、このような場合には、それほど楽観的ではありません
インポートheapqの NUMS = [1、4、5、7、36、-3、65、33、26、28、2、4] ヒープ=リスト(NUMS) heapq.heapify(ヒープ) プリント(ヒープ)
結果
[-3、2、1、7,4、4、65、33、26、28、36、5]
これらの関数は、第1の下地データのリストに変換され、要素がスタックに配置されます
最も重要なパフォーマンス・ヒープヒープ[0]が最小の要素は常に、次の要素はheapq.heappopによって順番に()メソッドを見つけてもよいです
この方法れる最初の要素(最小)ポップアップ(この操作の複雑さは、O(logN個)であり、Nは、ヒープのサイズを表す)は、第2の元素で置換
heapq --nlargestモジュールは、2つの機能を有しており、リストnsmallestを見つけることができ、祖先、および他のデータ構造は、最大又はn個の要素の最小セット、のリストを返します
インポートheapqの NUMS = {1、8、9、41、5、6、-5、21、42、37、2} #1 NUMS = [1、8、9、41、5、6、-5、21、42 、37、2] #1 NUMS =(1、8、9、41、5、6、-5、21、42、37、2) 印刷(heapq.nlargest(3、NUMS)) プリント(heapq.nsmallest(3 、NUMS))
結果
[42、41、37] [-5、1、2]
これらの2つの機能は、それらをより複雑なデータ構造で作業できるように、パラメータのキーを受け入れます
インポートheapqの ポートフォリオ= [ { '名前': '日'、 '年齢':25 '賃金':100}、 { '名前': '明'、 '年齢':10、 '賃金':55}、 { '名前': 'サン'、 '年齢':32、 '賃金':321.5}、 { '名前': 'SI'、 '年齢' 28、 '賃金':222.2}、 { '名前':「ウー」、 '年齢':43 '賃金':256} ] 安い= heapq.nsmallest(3、ポートフォリオ、キー=ラムダS:S [ '賃金']) 高価= heapq.nlargest(3、ポートフォリオ、キー=ラムダS:S [ '賃金']) プリント(安い) プリント(高価な)
結果
[{ '年齢':10、 '名称': '明'、 '賃金':55}、{ '年齢':25、 '名称': '日'、 '賃金':100}、{ '年齢': 28、 '名称': 'SI'、 '賃金':222.2}] [{ '年齢':32、 '名称': 'サン'、 '賃金':321.5}、{ '年齢':43、 'name'の: '呉'、 '賃金':256}、{ '年齢':28、 '名称': 'SI'、 '賃金':222.2}]
データ構造要素と比較して最大またはn個の要素の最小値、および探して、nが小さい場合は、上記の方法の性能は、我々は、スタックを使用することができ、このような場合には、それほど楽観的ではありません
インポートheapqの NUMS = [1、4、5、7、36、-3、65、33、26、28、2、4] ヒープ=リスト(NUMS) heapq.heapify(ヒープ) プリント(ヒープ)
結果
[-3、2、1、7,4、4、65、33、26、28、36、5]
これらの関数は、第1の下地データのリストに変換され、要素がスタックに配置されます
最も重要なパフォーマンス・ヒープヒープ[0]が最小の要素は常に、次の要素はheapq.heappopによって順番に()メソッドを見つけてもよいです
この方法れる最初の要素(最小)ポップアップ(この操作の複雑さは、O(logN個)であり、Nは、ヒープのサイズを表す)は、第2の元素で置換