布尔列表上是否有用于元素布尔运算符的内置函数?

发布于 2024-08-31 11:48:06 字数 454 浏览 6 评论 0原文

例如,如果您有 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

椵侞 2024-09-07 11:48:06

没有内置的方法可以做到这一点。一般来说,列表推导式等是在 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.

圈圈圆圆圈圈 2024-09-07 11:48:06

尝试:

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

如果您正在处理很长的列表,或者
你的一些变量是/需要是 numpy 数组,等效的 numpy 代码是:

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

根据你的需要修改它。

Try:

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

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:

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

modify it based on your needs.

夜还是长夜 2024-09-07 11:48:06

如果您指定要折叠的维度,则 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)

The numpy.all function does what you want, if you specify the dimension to collapse on:

>>> 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)
耳根太软 2024-09-07 11:48:06

不,没有这样的内置函数。我将使用您使用 zipall / any 的方法。

No, there are no such built-ins. Your method using zip and all / any is what I would use.

呆橘 2024-09-07 11:48:06

不,我不相信标准库中有任何这样的函数......特别是当它很容易根据提供的函数编写时。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文