gpt4 book ai didi

python - 和/或 python 中 boolean 列表的元素明智

转载 作者:行者123 更新时间:2023-12-02 18:58:55 25 4
gpt4 key购买 nike

我在 python 中有两个 boolean 列表:

l1 = [True, False, True]
l2 = [False, True, True]

我希望对它们进行元素方面的比较和/或。我希望得到:

l3 = [False, False, True] # elemental-wise And
l4 = [True, True, True] # elemental-wise Or

所以我简单地说:

l3 = l1 and l2
l4 = l1 or l2

但结果却出人意料地如下:

l3=[False, True, True] (which is l2)
l4=[True, False, True] (which is l1)

如何才能干净利落地完成元素方面的比较?

最佳答案

您可以使用列表理解

l3 = [(i and j) for i,j in zip(l1,l2)]
l4 = [(i or j) for i,j in zip(l1,l2)]

当你在做的时候

l3 = l1 and l2
l4 = l1 or l2

然后它被减少到

l3 = bool(l1) and l2
l4 = bool(l1) or l2

现在由于 l1 是非空列表,所以bool(l1) = True

现在,我假设在 l3 = l1 和 l2 的情况下,l1 被评估为 True 所以对于 short电路评估,它返回l2

如果l4 = l1或l2,同样由于短路评估,自l1返回l1 code> 为 True

所以,你得到了这样的结果。短路评估只不过是——

  1. 对于A和B,如果A计算结果为True,则继续计算B并返回B的结果。如果A计算结果为False,则没有必要计算B。返回结果A.
False and print('hello')
>>> False
True and print('hello')
>>> hello
  • 对于A或B,如果A计算结果为True,则计算B没有意义。只需返回A的结果。如果A计算结果为False,则返回结果B.
  • True or (1/0)
    >>> True
    False or (1/0)
    >>> ZeroDivisionError: division by zero

    注意:

    bool([]) = False
    bool([1,2,'a']) = True
    bool(['False']) = True

    关于python - 和/或 python 中 boolean 列表的元素明智,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65859925/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com