web-dev-qa-db-ja.com

pythonリストのすべての要素がFalseかどうかをテストします

すべての要素が「false」であるため、「false」を返す方法は?

指定されたリストは次のとおりです。

data = [False, False, False]
47
hiker

any を使用:

>>> data = [False, False, False]
>>> not any(data)
True

iterableに真理値がある場合、anyはTrueを返します。

95
falsetru

基本的に、イテレート可能オブジェクトを処理し、シーケンスのどのブール値要素が評価されるかに応じてTrueまたはFalseを返す2つの関数があります。

  1. all(iterable)は、iterableのすべての要素が真の値(reduce(operator.and_, iterable)など)と見なされる場合にTrueを返します。

  2. any(iterable)は、iterableの少なくとも1つの要素が真の値である場合にTrueを返します(これも機能的なものを使用して、reduce(operator.or_, iterable))。

all関数を使用して、リストにoperator.not_をマッピングするか、値を無効にして新しいシーケンスを作成し、新しいシーケンスのすべての要素がtrueであることを確認できます。

>>> all(not element for element in data)

any関数を使用すると、少なくとも1つの要素がtrueであることを確認し、true要素がある場合はFalseを返す必要があるため、結果を否定できます。

>>> not any(data)

De Morganの法則によれば、これら2つのバリアントは同じ結果を返しますが、より短く、読みやすいため(そして、実際には「真の値ではない」と直感的に理解できるため、anyを使用する)最後の方を好むでしょうデータ」)、より効率的です(余分なシーケンスを作成しないため)。

16
Alexey Orlenko