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
複数のチェーンが可能 or
sを単一のステートメントに含めると、次のように評価されます。 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
データ型から boolean
s。 たとえば、Javaは、次のようなことを試みた場合に文句を言います。 if("some string")
or if(15)
使用したタイプはに変換できないことを伝えます boolean
.
一方、Pythonはそのようなことを行わず、代わりに渡されたものを変換します boolean
それについてあなたに警告することなく。
Pythonはほとんどのものをに変換します True
いくつかの例外を除いて:
- 0(0.0を含む)に等しい数値は、次のように扱われます。
False
。 ここでよくある誤解は、負の値(-2、-3.3、…)は次のように扱われるというものです。False
同様に、彼らは として扱われるFalse
! - 空のシーケンス(またはコレクション)は、次のように扱われます。
False
、空を含むstring
s、空list
sなど。使用時に予期しない動作が発生する可能性があることに注意してくださいall()
空でiterable
(戻りますTrue
). - 実際
boolean
値False
もちろんとして扱われます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/