heapq heapqモジュール

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の元素で置換

 

おすすめ

転載: www.cnblogs.com/xdlzs/p/11200393.html
おすすめ