web-dev-qa-db-ja.com

ブールリスト上の要素ごとのブール演算子の組み込み関数はありますか?

たとえば、同じ長さのブール値のリストがn個ある場合、要素ごとのブール値ANDは、すべての入力リストがTrueで、それ以外の場所ではFalseである位置にTrueを持つ、その長さの別のリストを返す必要があります。

書くのはとても簡単です。(標準化/読みやすさのために)ビルトインが存在する場合はそれを使用したいと思います。

要素ごとのANDの実装は次のとおりです。

def eAnd(*args):
    return [all(Tuple) for Tuple in Zip(*args)]

使用例:

>>> eAnd([True, False, True, False, True], [True, True, False, False, True], [True, True, False, False, True])
[True, False, False, False, True]
27
bshanks

これを行うための組み込みの方法はありません。一般的に、リスト内包表記などは、Pythonで要素ごとの操作を行う方法です。

Numpyは、配列型でこれを提供します(技術的な制限のために&を使用)。 Numpy配列は通常、要素ごとに操作を実行します。

22
Mike Graham

試してください:

[ x&y for (x,y) in Zip(list_a, list_b)]
19
ntg

numpy.all関数は、折りたたむディメンションを指定した場合、必要な処理を実行します。

>>> all([[True, False, True, False, True], [True, True, False, False, True], [True, True, False, False, True]], 0)
array([ True, False, False, False,  True], dtype=bool)
3
Tom

いいえ、そのような組み込みはありません。 Zipall/anyを使用するメソッドが私が使用するものです。

1
Eli Bendersky

いいえ、標準ライブラリにそのような関数があるとは思いません...特に、提供されている関数の観点から非常に簡単に記述できる場合はそうです。

1
David Z