開発者ドキュメント

Pythonでall、any、max、min関数を使用する方法

序章

Pythonには、いくつかの組み込み関数が含まれています。これらは、追加のモジュールをインポートせずに任意のPythonコードから呼び出すことができるグローバルPython関数です。 たとえば、いつでも電話をかけることができます print テキストを出力する組み込み関数。

組み込み関数のいくつか(all, any, max、 と min それらの中で)引数として値の iterables を取り、単一の値を返します。 iterable は、「反復」できるPythonオブジェクトです。つまり、アイテムを順番に返し、次の場所で使用できるようにします。 for ループ。 組み込み関数は、たとえば、リスト内のすべてまたは一部の要素が特定の基準を満たしているかどうかを判断したり、リスト内の最大または最小の要素を検索したりする場合に役立ちます。

このチュートリアルでは、組み込み関数を使用します all, any, max、 と min.

前提条件

このチュートリアルを最大限に活用するには、次のものを用意することをお勧めします。

使用する all

内蔵機能 all イテレータ内のすべての要素が True. 例えば:

all([True, True])

前のコードを実行すると、次の出力が表示されます。

Output
True

この最初の例では、 all そしてそれに2つの要素(2つ True ブール値)。 iterableのすべての要素は True、出力は True.

all 戻ります False 指定されたイテレータの1つ以上の要素が False:

all([True, False, True])

前のコードを実行すると、次の出力が表示されます。

Output
False

あなたが呼ぶ all 1つを含む3つの要素を含むリスト False ブール値。 イテレータの要素の1つが False、への呼び出しの出力 all だった False.

特に、 all 反復を停止し、すぐに戻ります False それが最初に遭遇するとすぐに False イテレータのエントリ。 そう、 all 相互に構築される可能性のある連続する条件を確認したいが、1つの条件が発生するとすぐに戻る場合に便利です。 False.

注意すべき特別な場合は、 all 空のイテレータが与えられます:

all([])

前のコードを実行すると、次の出力が表示されます。

Output
True

あなたが与えるとき all 空のイテレータ(たとえば、次のような空のリスト all([]))、その戻り値は True. そう、 all 戻り値 True iterableのすべての要素がTrueであるか、要素が0の場合。

all ジェネレーターやカスタム条件と組み合わせると特に役立ちます。 使用する all 多くの場合、本格的な文章を書く場合よりも短く簡潔です。 for ループ。 リストにで始まる要素があるかどうかを調べるための例を考えてみましょう "s":

animals = ["shark", "seal", "sea urchin"]
all(a.startswith("s") for a in animals)

前のコードを実行すると、次の出力が表示されます。

Output
True

あなたが呼ぶ all 引数としてgeneratorを使用します。 ジェネレータは、の各要素に対してブール値を生成します。 animals 動物が文字で始まるかどうかに基づくリスト s. 最終的な戻り値は True のすべての要素が animals リストはで始まります s.

注:メモリを節約する方法として、リスト内包表記の代わりにジェネレータ式を使用できることがよくあります。 たとえば、 all(i < 8 for i in range(3))all([i < 8 for i in range(3)]). 両方のステートメントが返されます True 0、1、2はすべて8未満だからです。 ただし、2番目の例(リスト内包表記を使用)には、3つのエントリの長さのリストを暗黙的に作成するという追加のオーバーヘッドがあります([True, True, True])そしてそのリストを all 関数。 対照的に、最初の例(ジェネレーター式を使用)は、ジェネレーターオブジェクトを all 関数、 all 関数は、中間リストのオーバーヘッドなしで直接反復します。

本格的なを使用して書かれた同等のコードを検討してください for ループはかなり冗長になります。

animals = ["shark", "seal", "sea urchin"]

def all_animals_start_with_s(animals):
    for a in animals:
        if not a.startswith("s"):
            return False
    return True

print(all_animals_start_with_s(animals))

それなし all、すべての動物が文字で始まるかどうかを判断するためのコード s 実装するにはさらに数行必要です。

次に、兄弟関数を見てみましょう。 all: any.

使用する any

内蔵機能が使えます any イテレータ内の要素が True. 例えば:

any([False, True])

前のコードを実行すると、次の出力が表示されます。

Output
True

あなたが呼ぶ any そしてそれに2つの要素を持つリストを与えます( False ブール値と True ブール値)。 イテレータの1つ以上の要素が True、出力も True.

any 戻ります False 指定されたイテレータ内の要素の0が True:

all([False, False, False])

前のコードを実行すると、次の出力が表示されます。

Output
False

あなたが呼ぶ any 3つの要素を含むリスト(すべて False ブール値)。 イテレータ内の要素の0は、 True、への呼び出しの出力 anyFalse.

特に、 any 反復を停止し、すぐに戻ります True それが最初に遭遇するとすぐに True イテレータのエントリ。 そう、 any 連続する条件を確認したい場合に便利ですが、1つの条件が確認されたらすぐに戻ります True.

any—その兄弟メソッドのように all—ジェネレーターおよびカスタム条件と組み合わせると(完全なものの代わりに)特に役立ちます for ループ)。 リストにで終わる要素があるかどうかを調べるための例を考えてみましょう "urchin":

animals = ["shark", "seal", "sea urchin"]
any(s.endswith("urchin") for s in animals)

次の出力が表示されます。

Output
True

あなたが呼ぶ any 引数としてジェネレータを使用します。 ジェネレータは、の各要素に対してブール値を生成します。 animals 動物がで終わるかどうかに基づくリスト urchin. 最終的な戻り値は True の1つの要素が animals リストはで終わります urchin.

注:いつ any 空のイテレータが与えられます(たとえば、次のような空のリスト any([]))、その戻り値は False. そう、 any 戻り値 False イテレータに0個の要素がある場合、またはイテレータ内のすべての要素も False.

次に、別の組み込み関数を確認します。 max.

使用する max

内蔵機能 max 引数で指定された最大の要素を返します。 例えば:

max([0, 8, 3, 1])

max 引数として4つの整数を持つリストが与えられます。 の戻り値 max そのリストの最大の要素です: 8.

出力は次のようになります。

Output
8

2つ以上の位置引数が与えられた場合(反復可能な単一の位置引数とは対照的に)、 max 指定された引数の最大のものを返します。

max(1, -1, 3)

前のコードを実行すると、次の出力が表示されます。

Output
3

max 3つの個別の引数が与えられ、そのうち最大のものは 3. したがって、への呼び出しの戻り値 max3.

と同じように anyall, max 完全に記述された同等のコードよりも使用する行が少ないため、特に役立ちます for ループ。

max 数値よりも複雑なオブジェクトを処理することもできます。 たとえば、 max プログラム内の辞書またはその他のカスタムオブジェクトを使用します。 max 名前の付いたキーワード引数を使用して、これらのオブジェクトに対応できます key.

あなたは使用することができます key 最大値を決定するための比較で使用される値を決定するカスタム関数を定義するキーワード引数。 例えば:

entries = [{"id": 9}, {"id": 17}, {"id": 4}]
max(entries, key=lambda x: x["id"])

出力は次のようになります。

Output
{'id': 17}

あなたが呼ぶ max 入力として辞書のリストを使用します。 あなたは匿名で与える lambda として機能する key キーワード引数。 max を呼び出します lambda 内のすべての要素の関数 entries リストし、の値を返します "id" 指定された要素のキー。 最終的な戻り値は、の2番目の要素です。 entries: {"id": 17}. の2番目の要素 entries 最大の "id" 値なので、最大の要素と見なされました。

いつ max 空のイテレータで呼び出された場合、操作を拒否し、代わりに ValueError:

max([])

このコードを実行すると、次の出力が表示されます。

Output
Traceback (most recent call last): File "max.py", line 1, in <module> max([]) ValueError: max() arg is an empty sequence

あなたが呼ぶ max 引数として空のリストを使用します。 max これを有効な入力として受け入れず、 ValueError 代わりに例外。

max と呼ばれるカウンターパートがあります min、次に確認します。

使用する min

内蔵機能 min 引数で指定された最小の要素を返します。 例えば:

min([8, 0, 3, 1])

あなたが与える min 引数として4つの整数を持つリスト。 の戻り値 min そのリストの最小要素です: 0.

出力は次のようになります。

Output
0

2つ以上の位置引数が与えられた場合(反復可能な単一の位置引数とは対照的に)、 min 指定された引数の最小値を返します。

min(1, -1, 3)

前のコードを実行すると、次の出力が表示されます。

Output
-1

あなたが与える min 3つの個別の引数、そのうちの最小のものは -1. したがって、への呼び出しの戻り値 min-1.

お気に入り max, min 名前の付いたキーワード引数をサポートします key 数字よりも複雑なオブジェクトを渡すことができるようにします。 を使用して key 引数を使用すると、 min プログラムが定義する可能性のあるカスタムオブジェクトで機能します。

あなたは使用することができます key 最小値を決定するための比較で使用される値を決定するカスタム関数を定義するキーワード引数。 例えば:

entries = [{"id": 9}, {"id": 17}, {"id": 4}]
min(entries, key=lambda x: x["id"])
Output
{'id': 4}

あなたが呼ぶ min 入力として辞書のリストを使用します。 あなたは匿名で与える lambda として機能する key キーワード引数。 min を呼び出します lambda 内のすべての要素の関数 entries リストし、の値を返します "id" 指定された要素のキー。 最終的な戻り値は、の3番目の要素です。 entries: {"id": 4}. の3番目の要素 entries 小さくなった "id" 値であるため、最小要素と見なされました。

お気に入り max、電話するとき min 空のイテレータを使用すると、操作を拒否し、代わりに ValueError:

min([])

前のコードを実行すると、次の出力が表示されます。

Output
Traceback (most recent call last): File "min.py", line 1, in <module> min([]) ValueError: min() arg is an empty sequence

あなたが呼ぶ min 引数として空のリストを使用します。 min これを有効な入力として受け入れず、 ValueError 代わりに例外。

結論

このチュートリアルでは、Pythonの組み込み関数を使用しました all, any, max、 と min. あなたは機能についてもっと学ぶことができます all, any, max、 と min およびPythonドキュメントに組み込まれているその他のPython

他のPython組み込み関数の詳細については、数値を操作するための組み込みのPython 3関数 Pythonマップ関数の使用方法、およびも確認できます。 Pythonフィルター関数の使用方法。

モバイルバージョンを終了