Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで最大または最小のアイテムを見つける方法は?


この記事は、Pythonで最大または最小のアイテムを見つけたい開発者を対象としています。使用するいくつかの方法を示し、あなたに最適な方法を結論付けます。

方法– 1:リストのスライスアプローチ

単一の最小または最大のアイテムを検索しようとしている場合、つまりN =1の場合は、min()とmax()を使用する方が高速です。

ランダムな整数を生成することから始めましょう。

import random
# Create a random list of integers
random_list = random.sample(range(1,10),9)
random_list
のランダムリストを作成します

出力

[2, 4, 5, 1, 7, 9, 6, 8, 3]

最小で最大のアイテムの検索(N =1)

# Find the smallest number (N=1)
min
(
random_list
)

出力

1
# Find the largest number (N=1)
max
(
random_list
)

出力

9

3つの最小および最大のアイテムの検索(N =3)

同様に、Nがコレクション自体とほぼ同じサイズである場合、通常、最初にそれを並べ替えてNのスライスを取得する方が高速です。

# lets get the nsmallest using a slice approach(N=3)
sorted(random_list)[:3]
を使用してnsmallestを取得します

出力

[1, 2, 3]
# lets get the nlargest using a slice approach(N=3)
sorted(random_list)[-3:]
を使用して最大値を取得します

出力

[7, 8, 9]

メソッド– 2:リスト上のheapqメソッド

heapqモジュールには、nlargest()とnsmallest()の2つの関数があり、nsmallestまたはnlargestアイテムを検索するために使用できます。

import heapq
import random
random_list = random.sample(range(1,10),9)

# nsmallest items (N=3)
heapq.nsmallest(3,random_list)

出力

[1, 2, 3]
# nlargest items (N=3)
heapq.nlargest(3,random_list)

出力

[9, 8, 7]

もう少し複雑なデータがある場合、heapq関数には使用できる重要なパラメーターがあります。

import heapq
grandslams = [
{'name':'Roger Federer','titles':20},
{'name:'Rafel Nadal','titles':19},
{'name':'Novak Djokovic','titles':17},
{'name':'Andy Murray','titles':3},]

# Players with less titles (N=3)
less = heapq.nsmallest(3,grandslams,
key = lambdas:s['titles'])
less

出力

[{'name': 'Andy Murray', 'titles': 3},
{'name': 'Novak Djokovic', 'titles': 17},
{'name': 'Rafel Nadal', 'titles': 19}]
# Players with highest titles (N=3)
more = heapq.nlargest(3,grandslams,key = lambdas:s['titles'])
more

出力

[{'name': 'Roger Federer', 'titles': 20}, {'name': 'Rafel Nadal', 'titles': 19}, {'name': 'Novak Djokovic', 'titles': 17}]

DataFrameから最大および最小のNを検索します。

ええと、世界はCSVファイルで構成されています。そうです!。

したがって、Python開発のある時点で、CSVと明らかにDataFrameに遭遇すると想定するのは非常に安全です。

DataFrameから最大/最小のNを見つけるためのいくつかの方法を紹介します。

最初のメソッドでは、sort_values()メソッドを使用して値を並べ替え、headメソッドを使用して値を取得します。

import pandas as pd
import io
# Define your data
data = """
player,titles
Djokovic,17
Nadal,19
Federer,20
Murray,3
"""
throwaway_storage = io.StringIO(data)
df = pd.read_csv(throwaway_storage,index_col = "player")


# nsmallest (N = 3)
df.sort_values("titles").head(3)

出力

player title
_______________
Murray    3
Djokovic 17
Nadal    19


# nlargest (N = 3)
df.sort_values("titles",ascending = False).head(3)

出力

player title
_______________
Federer  20
Nadal    19
Djokovic 17

行を並べ替えて.head()メソッドを使用する代わりに、.nsmallest()メソッドと.nlargest()メソッドを呼び出すことができます。

df.nsmallest(3,columns="titles")

出力

player title
_______________
Murray    3
Djokovic 17
Nadal    19


df.nlargest(3,columns = "titles")

出力

player title
_______________
Federer  20
Nadal    19
Djokovic 17

結論

比較的少数のアイテムを検索しようとしている場合は、nlargest()関数とnsmallest()関数が最適です。

単一の最小または最大のアイテム(N =1)を単に見つけようとしている場合は、min()およびmax()を使用する方が高速です。

同様に、Nがコレクション自体とほぼ同じサイズである場合、通常、最初にそれを並べ替えてスライスを取得する方が高速です。

結論として、nlargest()とnsmallest()の実際の実装は、Pythonの動作に適応し、ユーザーに代わってこれらの最適化の一部を実行します。


  1. Windows 10 で最大サイズのファイルを簡単に見つける方法

    十分なディスク容量がないために、コンピューターが正常に動作しないか、速度が低下する場合があります。この場合、ディスク上の大きなファイルを見つけて別のストレージ デバイスに移動するか、それらを削除してディスク領域を解放することをお勧めします。 関連記事: ディスク クリーンアップを実行してスペースを解放してください。 ディスク上の大きなファイルを手動で検索するには、多くの時間と労力がかかる場合があります。これを回避するには、システム上の大きなファイルを簡単かつ簡単に見つけるのに役立つ以下の簡単な手順に従うことができます. ステップ 1. よく使用されるフォルダのサイズを調べます。 まず

  2. Windows 10 で最大のファイルを見つける方法

    空き容量が少ないというメッセージが表示され、メモリを解放するのが難しい場合は、Windows 10 で大きなファイルを見つけるのが最善の方法です。 しかし、PC で大きなファイルを検索するにはどうすればよいでしょうか? さて、Windows 10 で大きなファイルを見つける方法はいくつかあります。組み込みツールを使用するか、Disk Analyzer pro などのサードパーティ製アプリを使用できます。このアプリは、すぐにタスクを実行します。さらに、ジャンクファイル、一時ファイル、および重複をきれいにするのに役立ちます。無駄なストレージ スペースのもう 1 つの一般的な理由は、PC の