Pythonのmin関数を使ってリストや配列の最小値を求める方法

スポンサーリンク
スポンサーリンク

イントロダクション

この記事では、Pythonのmin()メソッドの使い方を理解するつもりです。

基本的に、Pythonの min() メソッドは、渡された値のセットまたは渡されたイテラブルの要素の中から最小の値を返します。

Python の min() メソッドを理解する

Python の min() メソッドの一般的な構文は以下のとおりです。

これを使うと、反復処理可能な要素(リスト、タプル、文字列など)の中で最小の値を見つけることができます。

min(iterable, *[, key, default])

また、アイテムの集合から最小値を求めるには、すべてのアイテムをカンマ(“, “)で区切って min() 関数に直接渡せばよいでしょう。

min(arg1, arg2, *args[, key])

ここで

  • iterable は、最小値を求めるための値を格納します。
  • key は1行の順序付け関数です。
  • default は、渡された iterable が空の場合、この関数が返すデフォルト値です。
  • arg1, arg2, … argn は、min()関数が最小値を返す値の集合です。

さて、min()メソッドの使い方を理解したところで、いくつかの例を見て、その動作をより良く理解しましょう。

Python の min() メソッドを使用する

前述したように、Pythonの min() 関数を使うと、引数として渡された値の集合の中で最も小さい値や、渡されたイテラブルの要素の中で最も小さい値を見つけることができます。

では、その使い方を理解するために、いくつかの例を挙げてみましょう。

1. イテラブルオブジェクトの場合

min()` 関数は、リスト、タプル、リストのリスト、タプルのリストなど、反復可能なオブジェクトに存在する最小の値を見つけるために広く使われています。

単純なリストやタプルの場合、イテレート可能なオブジェクトに存在する最小の値を返します。

次の例を見てください。

# initialisation of list
list1 = [23,45,67,89]
 
# finding min element
print("Min value is : ", max(list1, default=0))

結果は、以下の通りになります。

Min value is : 23

ここでは、リスト list1 を min() メソッドに直接渡すと、リストに存在するすべての要素の最小値、つまり 23 が得られます。

default` 値は 0 に設定されているので、もし渡された反復記号が空のものであれば、このメソッドはこのデフォルト値 (0) を返していたことでしょう。

文字のリストに対しては、 min() メソッドは最小の ASCII 値を持つ要素を返します。

2. 複数の引数を指定した場合

min()` メソッドに複数の引数を渡すと、その中で最も小さい引数を返します。

注意: min() メソッドには、複数の値だけでなく、複数のイテレータブルも渡すことができます。

複数のイテレータブルを渡した場合、最初の要素(0番目のインデックスにある値)が最も小さいものを返します。

以下の例で簡単に説明します。

# initialisation of lists
list1 = [23,45,67]
list2 = [89,65,34]
list3 = [19,90,31]
 
# finding min element
print("Min among set of values is : ", min(765,876,434))
print("Min list among the given lists is : ", min(list1,list2,list3))

結果は、以下の通りになります。

Min among set of values is 434
Min list among the given lists is :  [19, 90, 31]

上の例では、複数の値を min() メソッドに渡すと、単純に最も小さい値(434)を返します。

一方、list1, list2, list3 に対しては、0番目のインデックス値が最小である list3 が返されます(19)。

3. キー関数付き

先に述べたように、key関数は、どのパラメータを基準に最小値を返すかを決める一行順関数です。

このキー概念を理解するために、例を挙げてみましょう。

# initialisation of variables
list_of_tuples = [(9, 2, 7), (6, 8, 4), (3, 5, 1)]
 
list1 = [23,45]
list2 = [89,65,34]
list3 = [19,90,31,67]
 
def ret_2nd_ele(tuple_1):
    return tuple_1[1]
 
#find Min from a list of tuples with key on the basis of the 2nd element
print("Min in list of tuples : ", min(list_of_tuples, key=ret_2nd_ele))
 
#find min from a bunch of lists on the basis of their length
print("List with min length : ", min(list1,list2,list3,key=len))

結果を出力すると、以下の様になります。

出力:

Min in list of tuples :  (9, 2, 7)
List with min length :  [23, 45]
  • 最初に、タプルのリストと、長さの異なる3つの整数リストを初期化します。
  • 次に、渡されたタプルの2番目の要素または1番目のインデックス項目を返す関数 ret_2nd_ele() を定義します。
  • その後、この list_of_tuples を ret_2nd_ele() 関数をキーにして min() メソッドに渡します。
  • 再び、list1, list2, list3 を引数として、組み込みの len() メソッドをキーに min() メソッドに渡します。

このようにして、タプルのリストに対して、2番目の要素(1番目の項目)が最小となるタプルを取得します。

そして、3つのリストのうち、長さが最小のリスト (len()を使用) 、すなわち list1 が得られます。

まとめ

min()メソッドにデフォルト値が設定されていない空のイテラブルを渡すと、ValueError` が発生することを常に覚えておいてください。

以上、Pythonの min() メソッドについてのチュートリアルでした。

さらに質問がある場合は、下のコメント欄からどうぞ。

タイトルとURLをコピーしました