序章
Pythonには、いくつかの組み込み関数が含まれています。これらは、追加のモジュールをインポートせずに任意のPythonコードから呼び出すことができるグローバルPython関数です。 たとえば、いつでも電話をかけることができます print
テキストを出力する組み込み関数。
組み込み関数のいくつか(all
, any
, max
、 と min
それらの中で)引数として値の iterables を取り、単一の値を返します。 iterable は、「反復」できるPythonオブジェクトです。つまり、アイテムを順番に返し、次の場所で使用できるようにします。 for
ループ。 組み込み関数は、たとえば、リスト内のすべてまたは一部の要素が特定の基準を満たしているかどうかを判断したり、リスト内の最大または最小の要素を検索したりする場合に役立ちます。
このチュートリアルでは、組み込み関数を使用します all
, any
, max
、 と min
.
前提条件
このチュートリアルを最大限に活用するには、次のものを用意することをお勧めします。
-
Python3でのプログラミングにある程度精通している。 背景知識については、 Python3チュートリアルシリーズでコーディングする方法を確認できます。
-
Python Interactive Console、このチュートリアルのサンプルコードを試してみたい場合は、 Python InteractiveConsoleチュートリアルの操作方法を使用できます。
使用する all
内蔵機能 all
イテレータ内のすべての要素が True
. 例えば:
all([True, True])
前のコードを実行すると、次の出力が表示されます。
OutputTrue
この最初の例では、 all
そしてそれに2つの要素(2つ True
ブール値)。 iterableのすべての要素は True
、出力は True
.
all
戻ります False
指定されたイテレータの1つ以上の要素が False
:
all([True, False, True])
前のコードを実行すると、次の出力が表示されます。
OutputFalse
あなたが呼ぶ all
1つを含む3つの要素を含むリスト False
ブール値。 イテレータの要素の1つが False
、への呼び出しの出力 all
だった False
.
特に、 all
反復を停止し、すぐに戻ります False
それが最初に遭遇するとすぐに False
イテレータのエントリ。 そう、 all
相互に構築される可能性のある連続する条件を確認したいが、1つの条件が発生するとすぐに戻る場合に便利です。 False
.
注意すべき特別な場合は、 all
空のイテレータが与えられます:
all([])
前のコードを実行すると、次の出力が表示されます。
OutputTrue
あなたが与えるとき 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)
前のコードを実行すると、次の出力が表示されます。
OutputTrue
あなたが呼ぶ 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])
前のコードを実行すると、次の出力が表示されます。
OutputTrue
あなたが呼ぶ any
そしてそれに2つの要素を持つリストを与えます( False
ブール値と True
ブール値)。 イテレータの1つ以上の要素が True
、出力も True
.
any
戻ります False
指定されたイテレータ内の要素の0が True
:
all([False, False, False])
前のコードを実行すると、次の出力が表示されます。
OutputFalse
あなたが呼ぶ any
3つの要素を含むリスト(すべて False
ブール値)。 イテレータ内の要素の0は、 True
、への呼び出しの出力 any
は False
.
特に、 any
反復を停止し、すぐに戻ります True
それが最初に遭遇するとすぐに True
イテレータのエントリ。 そう、 any
連続する条件を確認したい場合に便利ですが、1つの条件が確認されたらすぐに戻ります True
.
any
—その兄弟メソッドのように all
—ジェネレーターおよびカスタム条件と組み合わせると(完全なものの代わりに)特に役立ちます for
ループ)。 リストにで終わる要素があるかどうかを調べるための例を考えてみましょう "urchin"
:
animals = ["shark", "seal", "sea urchin"]
any(s.endswith("urchin") for s in animals)
次の出力が表示されます。
OutputTrue
あなたが呼ぶ 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
.
出力は次のようになります。
Output8
2つ以上の位置引数が与えられた場合(反復可能な単一の位置引数とは対照的に)、 max
指定された引数の最大のものを返します。
max(1, -1, 3)
前のコードを実行すると、次の出力が表示されます。
Output3
max
3つの個別の引数が与えられ、そのうち最大のものは 3
. したがって、への呼び出しの戻り値 max
は 3
.
と同じように any
と all
, 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([])
このコードを実行すると、次の出力が表示されます。
OutputTraceback (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
.
出力は次のようになります。
Output0
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([])
前のコードを実行すると、次の出力が表示されます。
OutputTraceback (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フィルター関数の使用方法。