布尔列表中是否有元素明确布尔运算符的内置函数?

时间:2010-05-05 03:36:09

标签: python list built-in boolean-operations elementwise-operations

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

这很容易编写,我只是希望使用内置(如果存在)(为了标准化/可读性)。

这是元素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]

5 个答案:

答案 0 :(得分:20)

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

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

答案 1 :(得分:19)

尝试:

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

答案 2 :(得分:2)

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 :(得分:1)

不,没有这样的内置插件。您使用zipall / any的方法就是我要使用的方法。

答案 4 :(得分:1)

不,我不相信标准库中有任何这样的功能......特别是当它根据所提供的功能编写时非常容易。