min関数でPythonのオブジェクト内要素の最小値を取得のイメージ画像

min関数でPythonのオブジェクト内要素の最小値を取得

  • 公開日:2018/09/28
  • 更新日:2018/10/27
  • 投稿者:n bit

Pythonの組み込み関数『min関数』について解説。min関数を使えばオブジェクト内の要素で最小値を持つ要素の値を求めることができます。min関数の使い方やその特性等について詳しく見ていきましょう。

  • Python

この記事は約 分で読めます。(文字)

min関数とは

min関数はPythonの組み込み関数の1つでリストやタプル、辞書、セット、文字列といった複数の要素を持つオブジェクト内で最小値を持つ要素の値を求めることができる関数です。

min関数の主な用途

  • オブジェクト内の要素で最小値を持つ要素の値を取得

min関数の使い方

min関数の使い方は複数の要素の中から最小値を持つ要素の値を求めたいオブジェクトを引数として渡します。

min(複数の要素の中から最小値を持つ要素の値を求めたいオブジェクト)

実際にmin関数を使って様々なオブジェクト内の最小値を持つ要素の値を取得してみましょう。最初は利用頻度の高いデータ型『リスト』です。

list型(リスト)オブジェクト内の最小値を持つ要素の値をmin関数で取得

リストを代入した変数をmin関数の引数に渡して返される値をチェックしてみます。返された値を出力させるためprint関数等に渡してください。

x = [30, 20, 10, 40]

print(min(x))

出力結果

10
リストオブジェクト内の最小値を持つ要素値は10のため『10』と表示されました。

同じようにその他のデータ型もチェックしてみましょう。

tuple型(タプル)オブジェクト内の最小値を持つ要素の値をmin関数で取得

タプルを代入した変数をmin関数の引数に渡して返される値をチェックしてみます。

x = (30, 20, 10, 40)

print(min(x))

出力結果

10
タプルオブジェクト内の最小値を持つ要素値は10のため『10』と表示されました。

dict型(辞書)オブジェクト内の最小値を持つ要素の値をmin関数で取得

辞書を代入した変数をmin関数の引数に渡して返される値をチェックしてみます。

x = {'b':20, 'c':30, 'a':10, 'd':40}

print(min(x))

出力結果

a
辞書オブジェクト内の最小値を持つ要素値はaのため『a』と表示されました。結果からわかるように辞書オブジェクトは辞書内のkeyを基準として最小値を取得しています。

辞書内のvalueを基準として最小値を取得したい場合は変数名の後に『.values()』を付け足すことで変更できます。

x = {'b':20, 'c':30, 'a':10, 'd':40}

print(min(x.values()))

出力結果

10
辞書オブジェクト内のvalueで最小値を持つ要素値は10のため『10』と表示されました。

まだ学習していませんがその他にもmin関数で扱えるデータ型があります。それらも紹介しておきましょう。

set型(セット)オブジェクト内の最小値を持つ要素の値をmin関数で取得

セットを代入した変数をmin関数の引数に渡して返される値をチェックしてみます。

x = {30, 20, 10, 40}

print(min(x))

出力結果

10
セットオブジェクト内の最小値を持つ要素値は10のため『10』と表示されました。

frozenset型(セット)オブジェクト内の最小値を持つ要素の値をmin関数で取得

frozensetを代入した変数をmin関数の引数に渡して返される値をチェックしてみます。

x = frozenset({30, 20, 10, 40})

print(min(x))

出力結果

10
frozensetオブジェクト内の最小値を持つ要素値は10のため『10』と表示されました。

rangeオブジェクト内の最小値を持つ要素の値をmin関数で取得

rangeを代入した変数をmin関数の引数に渡して返される値をチェックしてみます。

x = range(2, 10, 2)

print(min(x))

出力結果

2
rangeオブジェクト内の最小値を持つ要素値は2のため『2』と表示されました。

str型(文字列)オブジェクト内の最小値をmin関数で取得

文字列を代入した変数をmin関数の引数に渡して返される値をチェックしてみましょう。

x = 'cba'

print(min(x))

出力結果

a
『a』と表示されました。文字列はアルファベット順に並べてa〜zに向けて値が大きくなります。そのため最小値を求めた時、“a”、“b”、“c”、の中では“a”が最小値となるため結果に『a』が返されました。

先ほどは小文字のみの文字列でしたが大文字と小文字が混ざった場合は大文字の方をより最小値として認識します。

x = 'cbaBCA'

print(min(x))

出力結果

A

大文字のため『A』が表示されています。

list型(リスト)オブジェクト内の文字列で最小値を持つ要素の値をmin関数で取得

min関数はリストオブジェクトが要素として複数持つ単語(文字列)の最小値を判定する場合1文字目の文字で判定を行い、同じ1文字目を持つ単語が複数ある場合はさらに2文字目を使って判定します。

x = ['apple', 'Apple', 'amazon', 'Amazon', 'windows', 'Windows', 'walmart', 'Walmart']

print(min(x))

出力結果

Amazon

オブジェクト内の要素で1文字目が最小値となるのは大文字のAを持つ'Apple'と'Amazon'です。次に2文字目で判定を行った場合『p』よりも『m』が小さな値となりますので『Amazon』と表示されました。

アルファベット、記号、数値、ダブルバイト文字が入り混じった文字列に対するmin関数の処理

その他、記号や数値、ダブルバイト文字などが混じってきた場合、min関数はどうなるのか気になる方もいるかもしれません。実はこれらの判定はUnicodeに準拠して行われておりアルファベット以外に記号や数値、ダブルバイト文字が入り混じっても最小値を判定することができます。

全く同じ最小の値を持つ要素が複数ある場合のmin関数の処理

もし全く同じ最小の値を持っている要素が複数あった場合は最初に表示されたものを結果として返します。

x = [30, 20, 10, 40, 30, 20, 10, 40]

print(min(x))

出力結果

10
リストオブジェクト内の最小値を持つ要素値は10。同じ値を持つ要素が2つあるのため最初に出現した『10』が表示されています。

min関数の引数にkeyとなる関数を渡して最小値の基準を変更

min関数は引数にkeyとなる関数を指定することができます。引数にkeyを指定した場合はkeyの関数を基準にして最小値を求めるよう変更されます。

参考例としてkeyにlen関数を指定した動作を見てみましょう。len関数はオブジェクトのサイズ(長さ)を測る関数でしたね。

つまりlen関数をkeyに指定することでオブジェクト内の各要素の長さが最も短いものを求めるように処理が変更されます。

x = ['apple', 'Apple', 'amazon', 'Amazon', 'windows', 'Windows', 'walmart', 'Walmart']

print(min(x, key=len))

出力結果

apple
リストオブジェクト内の文字列で最も文字数が少ないのは5文字の'apple'と'Apple'。同じ値を持つ要素が2つあるのため最初に出現した『apple』が表示されています。

今日のdot

『min関数』はUnicodeに基づいてリスト、タプル、辞書、セット等の複数の要素を持つオブジェクト内で最小の値を持つ要素値を取得します。

引数にkey関数を指定することで最小を求めるための基準を変更できます。覚えておくと2段階の処理を1度に行えますので便利です。