27

例如,如果您有 n 个长度相同的 bool 列表,则 elementwise boolean AND 应该返回另一个该长度的列表,该列表在所有输入列表都为 True 的位置为 True,而在其他所有位置为 False。

它很容易编写,如果存在的话,我只是更喜欢使用内置函数(为了标准化/可读性)。

这是元素与的实现:

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]
4

5 回答 5

23

没有内置的方法可以做到这一点。一般来说,列表推导等是您在 Python 中进行元素操作的方式。

Numpy 确实&在其数组类型中提供了这个(使用 , 用于技术限制)。Numpy 数组通常按元素执行操作。

于 2010-05-05T03:52:16.790 回答
19

尝试:

[ x&y for (x,y) in zip(list_a, list_b)]
于 2014-06-11T15:15:46.010 回答
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)
于 2014-06-04T16:12:08.490 回答
1

不,没有这样的内置插件。您使用zipand all/的方法any是我将使用的方法。

于 2010-05-05T03:40:45.360 回答
1

不,我不相信标准库中有任何这样的函数......特别是当它很容易根据提供的函数编写时。

于 2010-05-05T03:41:27.647 回答