布尔列表上是否有用于元素布尔运算符的内置函数?
例如,如果您有 n 个长度相同的布尔列表,则按元素布尔 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]
For example, if you have n lists of bools of the same length, then elementwise boolean AND should return another list of that length that has True in those positions where all the input lists have True, and False everywhere else.
It's pretty easy to write, i just would prefer to use a builtin if one exists (for the sake of standardization/readability).
Here's an implementation of elementwise AND:
def eAnd(*args):
return [all(tuple) for tuple in zip(*args)]
example usage:
>>> eAnd([True, False, True, False, True], [True, True, False, False, True], [True, True, False, False, True])
[True, False, False, False, True]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
没有内置的方法可以做到这一点。一般来说,列表推导式等是在 Python 中进行元素运算的方式。
Numpy 确实在其数组类型中提供了这一点(出于技术限制,使用
&
)。 Numpy 数组通常按元素执行操作。There is not a built-in way to do this. Generally speaking, list comprehensions and the like are how you do elementwise operations in Python.
Numpy does provide this (using
&
, for technical limitations) in its array type. Numpy arrays usually perform operations elementwise.尝试:
如果您正在处理很长的列表,或者
你的一些变量是/需要是 numpy 数组,等效的 numpy 代码是:
根据你的需要修改它。
Try:
If you are dealing with really long lists, or
some of your variables are / need to be numpy arrays, the equivalent numpy code would be:
modify it based on your needs.
如果您指定要折叠的维度,则 numpy.all 函数会执行您想要的操作:
The
numpy.all
function does what you want, if you specify the dimension to collapse on:不,没有这样的内置函数。我将使用您使用
zip
和all
/any
的方法。No, there are no such built-ins. Your method using
zip
andall
/any
is what I would use.不,我不相信标准库中有任何这样的函数......特别是当它很容易根据提供的函数编写时。
No, I don't believe there's any such function in the standard library... especially when it's so easy to write in terms of the functions that are provided.