Подтвердить что ты не робот

Существуют ли встроенные функции для элементарных булевых операторов над булевыми списками?

Например, если у вас есть n списков bools одинаковой длины, тогда elementwise boolean AND должен возвращать другой список этой длины, который имеет True в тех положениях, где все входные списки имеют True, а False - везде.

Это довольно легко написать, я бы предпочел использовать встроенный, если он существует (для стандартизации/удобочитаемости).

Здесь выполняется реализация elementwise 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]
4b9b3361

Ответ 1

Существует не встроенный способ сделать это. Вообще говоря, перечисления списков и т.п. - это то, как вы выполняете элементарные операции в Python.

Numpy предоставляет это (используя &, для технических ограничений) в своем типе массива. Частотные массивы обычно выполняют операции по элементам.

Ответ 2

Try:

[ x&y for (x,y) in zip(list_a, list_b)]

Ответ 3

Функция 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)

Ответ 4

Нет, таких встроенных модулей нет. Ваш метод с использованием zip и all/any - это то, что я буду использовать.

Ответ 5

Нет, я не верю, что в стандартной библиотеке есть такая функция... особенно когда ее так легко написать с точки зрения предоставляемых функций.