例如,如果你有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]
答案 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)
不,没有这样的内置插件。您使用zip
和all
/ any
的方法就是我要使用的方法。
答案 4 :(得分:1)
不,我不相信标准库中有任何这样的功能......特别是当它根据所提供的功能编写时非常容易。