ゼファーネットのロゴ

Pythonのany()およびall()と例

日付:


any()およびall()の概要

このチュートリアルでは、 any() & all() Pythonの関数。

  any(iterable) & all(iterable) はPythonの組み込み関数であり、Python2.5がリリースされてから使用されています。 どちらの関数も、一連の関数を作成するのと同じです。 or & and 渡された要素のそれぞれの間の演算子 iterable。 これらは両方とも、ボイラープレートループを置き換えることによってコードを短縮する便利な機能です。

どちらの方法も短絡してできるだけ早く値を返すため、反復可能なものが大量にある場合でも、可能な限り効率的です。

および/または演算子

どのように and/or これらの関数はそれらに基づいているため、演算子は機能します。

または演算子

  or 演算子は次のように評価します True 条件(オペランド)のいずれかが True.

print("(2 == 2) or (3 == 3) evaluates to: " + str((2 == 2) or (3 == 3)))
print("(2 == 2) or (3 == 2) evaluates to: " + str((2 == 2) or (3 == 2)))
print("(2 == 0) or (3 == 2) evaluates to: " + str((2 == 0) or (3 == 2)))

出力:

(2 == 2) or (3 == 3) evaluates to: True
(2 == 2) or (3 == 2) evaluates to: True
(2 == 0) or (3 == 2) evaluates to: False

複数のチェーンが可能 orsを単一のステートメントに含めると、次のように評価されます。 True if どれか 条件の True:

print(str(False or False or False or True or False))

この結果:

True

および演算子

  and 演算子は次のように評価します True すべての条件が True:

print("(2 == 2) and (3 == 3) evaluates to: " + str((2 == 2) and (3 == 3)))
print("(2 == 2) and (3 == 2) evaluates to: " + str((2 == 2) and (3 == 2)))
print("(2 == 0) and (3 == 2) evaluates to: " + str((2 == 0) and (3 == 2)))

出力:

(2 == 2) and (3 == 3) evaluates to: True
(2 == 2) and (3 == 2) evaluates to: False
(2 == 0) and (3 == 2) evaluates to: False

同様に or、複数のチェーンが可能 and 演算子、および彼らは評価します True 場合のみ オペランドは次のように評価されます True:

print(str(True and True and True and False and True))

この結果:

False

どれか()

方法 any(iterable) 一連のように動作します or の各要素間の演算子 iterable 合格しました。 これは、次のようなループを置き換えるために使用されます。

for element in some_iterable: if element: return True
return False

呼び出すだけで同じ結果が得られます any(some_iterable):

print(any([2 == 2, 3 == 2]))
print(any([True, False, False]))
print(any([False, False]))

このコードを実行すると、次のようになります。

True
True
False

Note:使用時に予期しない動作が発生する可能性があります any() 辞書と ブール値以外のデータ型。 場合 any() 辞書で使用され、いずれかが キー 評価する Trueではなく :

dict = {True : False, False: False} print(any(dict))

これは出力します:

True

一方、 any() 値を確認すると、出力は次のようになります。 False.

方法 any() 多くの場合、と組み合わせて使用​​されます map() メソッドとリスト内包:

old_list = [2, 1, 3, 8, 10, 11, 13]
list_if_even = list(map(lambda x: x % 2 == 0, old_list))
list_if_odd = [x % 2 != 0 for x in old_list] print(list_if_even)
print(list_if_odd) print("Are any of the elements even? " + str(any(list_if_even)))
print("Are any of the elements odd? " + str(any(list_if_odd)))

これは出力します:

[True, False, False, True, True, False, False]
[False, True, True, False, False, True, True]
Are any of the elements even? True
Are any of the elements odd? True

注: 空の場合 iterable に渡されます any()、メソッドは False.

あなたがについてもっと読みたいなら map()、filter()、reduce()関数、私たちはあなたが覆われている!

すべて()

  all(iterable) メソッドは一連のように評価します and 内の各要素間の演算子 iterable 合格しました。 これは、次のようなループを置き換えるために使用されます。

for element in iterable: if not element: return False
return True

メソッドは True のすべての要素が iterable 評価する True, False さもないと:

print(all([2 == 2, 3 == 2]))
print(all([2 > 1, 3 != 4]))
print(all([True, False, False]))
print(all([False, False]))

これは出力します:

False
True
False
False

Note:と同じように any()、辞書やデータ型以外のデータを渡すと、予期しない動作が発生する可能性があります boolean。 もう一度、 all() 辞書で使用され、すべてが キー 評価する Trueではなく .

との別の類似点 any() つまり all() また、一般的に組み合わせて使用​​されます map() 関数とリスト内包:

old_list = ["just", "Some", "text", "As", "An", "example"]
list_begins_upper = list(map(lambda x: x[0].isupper(), old_list))
list_shorter_than_8 = [len(x) < 8 for x in old_list] print(list_begins_upper)
print(list_shorter_than_8) print("Do all the strings begin with an uppercase letter? " + str(all(list_begins_upper)))
print("Are all the strings shorter than 8? " + str(all(list_shorter_than_8)))

これは出力します:

[False, True, False, True, True, False]
[True, True, True, True, True, True]
Do all the strings begin with an uppercase letter? False
Are all strings shorter than 8? True

注: 空の場合 iterable に渡されます all()、メソッドは True! これは、 all() あるかどうかをチェックします False の要素 iterable、および空のリストの場合、要素がないため、 False 要素のいずれか。

ブール変換とany()、all()関数

論理演算子を使用する場合、したがって使用する場合の混乱とエラーの一般的な原因 any() & all() 同様に、要素がのものでない場合に何が起こるかです boolean データ・タイプ。 言い換えれば、彼らが正確ではないとき True of False 代わりに評価する必要があります True or False.

一部のプログラミング言語は、boolean データ型から booleans。 たとえば、Javaは、次のようなことを試みた場合に文句を言います。 if("some string") or if(15) 使用したタイプはに変換できないことを伝えます boolean.

一方、Pythonはそのようなことを行わず、代わりに渡されたものを変換します boolean それについてあなたに警告することなく。

Pythonはほとんどのものをに変換します True いくつかの例外を除いて:

  • 0(0.0を含む)に等しい数値は、次のように扱われます。 False。 ここでよくある誤解は、負の値(-2、-3.3、…)は次のように扱われるというものです。 False 同様に、彼らは として扱われる False!
  • 空のシーケンス(またはコレクション)は、次のように扱われます。 False、空を含む strings、空 listsなど。使用時に予期しない動作が発生する可能性があることに注意してください all() 空で iterable (戻ります True).
  • 実際 booleanFalse もちろんとして扱われます False だけでなく、特別な価値 None.

Pythonが他のデータ型を「ブール化」する方法を使用する方法のいくつかの例 any() & all().

list_of_strings = ["yet", "another", "example",""]
print("Do all strings have some content?", all(list_of_strings)) list_of_ints = [0, 0.0, -2, -5]
print("Are any of the ints different than 0?", any(list_of_ints))

これは出力します:

Do all strings have some content? False
Are any of the ints different than 0? True

暗黙的なコードを使用しないことで、より読みやすいコードを記述したい場合があることに注意してください。 boolean このような変換。

まとめ

両方の any() & all() 関数は便宜上存在するものであり、コードを短くするが読みやすさを維持する場合にのみ使用する必要があります。

この記事では、 any() & all() 関数といくつかの例を通してそれらの使用法を紹介しました。

ソース:https://stackabuse.com/any-and-all-in-python-with-examples/

スポット画像

最新のインテリジェンス

スポット画像