私は、リスト内のすべての項目が真と評価された場合にのみ実行したいという条件があります。この例は、ブール(私の状況が、説明するのが容易ではない、実際に)返す関数のリストのようなものかもしれません:Pythonのbooleanリストにmin/maxを使用していますか?
def foo():
# do something
def bar():
# do something
def baz():
# do something
fncs = [foo, bar, baz]
if <every element in [fnc() for fnc in fncs] evaluates to true>:
# do something
私は間違いなくこれを行うことができます知っている:
all_true = True
for fnc in fncs:
if not fnc():
all_true = False
if all_true:
# do something
しかし、これが悪い形であれば、私は思っていた。また
if min([fnc() for fnc in fncs]):
# do something
私はリスト内包中にすべての偽の要素を選択し、リストが占有されているかどうかを確認しようとすることができ、(これは動作しますBOOL(ARR)ARR)のリストがあればFalseを返すと編曲が空の場合のみ、次のとおりです。
if not [None for fnc in fncs if not fnc()]:
# do something
私は「分」のような感じでは最後の方法よりも多くきれいで、最初のものは、最も簡単である一方、初心者を理解するには、何が起こっているのかがはっきりしているはずです。私は交互にエイリアシングを通してそれを明確にすることができました:
all_true = min
if all_true([fnc() for fnc in fncs]):
# do something
私はこれを行うための他の方法も忘れました。どの方法が最も望ましいのだろうかと思っています。
ありがとうございました!
ほとんどの言語は、リスト内のすべてのアイテムは、述語を満たすかどうかを確認する 'every'機能を持っています。私はPythonがそのような機能を持っていると思います。 – Carcigenicate
iterableのすべてが真であるかどうかを確認するには 'all'関数を使います。 –
iterableの項目が真であるかどうかをチェックする 'any'もあります。 –