是否有针对布尔列表的元素布尔运算符的内置函数?

新手上路,请多包涵

例如,如果您有 n 个相同长度的 bool 列表,则按元素布尔 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]

原文由 bshanks 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 379
2 个回答

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

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

原文由 Mike Graham 发布,翻译遵循 CC BY-SA 2.5 许可协议

尝试:

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

如果您正在处理非常长的列表,或者您的某些变量是/需要是 numpy 数组,则等效的 numpy 代码将是:

 list( np.array(list_a) & np.array(list_b) )

根据您的需要修改它。

原文由 ntg 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题