【问题标题】:Combine list of list of booleans based on AND or OR condition根据 AND 或 OR 条件组合布尔值列表
【发布时间】:2019-01-11 09:34:33
【问题描述】:

对于基于 OR 组合两个布尔值列表,可以使用 np.logical_or,相似性 AND 可以使用 np.logical_and 完成。

但是,如果我有一个包含 10 个布尔值列表的列表,并且想使用 AND 或 OR 将它们组合起来,我找不到一个简单的方法来做到这一点。

您能建议最有效的方法吗?

编辑:

booleans = [[True, True, False, True, False], [True, False, False, False, False], [True, False, False, False, False]]

OR 输出:[True, True, False, True, False]

AND 输出:[True, False, False, False, False]

谢谢, 杰克

【问题讨论】:

  • 你能添加一个输入->输出的例子吗?
  • 在这里合并列表是什么意思?
  • 如果您想要一个 NumPy 数组作为输出,请使用 numpy.logical_and.reduce - 或更一般的 ufunc.reduce
  • 我评论说,因为如果 OP 使用 NumPy,这是一个多次重复。 np.anynp.all 也在做同样的事情。

标签: python list boolean


【解决方案1】:

这是一个没有numpy的解决方案

>>> booleans = [[True, True, False, True, False], [True, False, False, False, False], [True, False, False, False, False]]
>>> or_output = list(map(any, zip(*booleans)))
>>> and_output = list(map(all, zip(*booleans)))
>>> 
>>> print (or_output)
[True, True, False, True, False]
>>> print (and_output)
[True, False, False, False, False]
>>> 

【讨论】:

  • 如果你能展示你是如何将一个函数 f 传递到 map 的周围结构中的。
  • @wheaties 这个解决方案还会将列表压​​缩两次,而它可以很容易地完成一次。
  • @RoadRunner 来自问题“使用 AND 或 OR” - 似乎没有必要同时进行。
猜你喜欢
  • 1970-01-01
  • 2019-08-25
  • 2014-05-30
  • 1970-01-01
  • 2017-03-28
  • 2020-10-12
  • 2022-07-29
相关资源
最近更新 更多