我在python中有两个布尔列表:
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)
我怎样才能做到元素上的比较又好又干净
您可以在列表理解中使用内置的^{} 和^{} 方法:
输出
您还可以使用内置的^{} 方法:
输出:
您可以使用列表理解
当你在做
然后它就变成了
既然
l1
是非空列表,那么bool(l1) = True
现在,我假设在
l3 = l1 and l2
的情况下,l1
被计算为True
,因此对于short circuit evaluation
,它返回l2
在
l4 = l1 or l2
的情况下,同样由于short circuit evaluation
,返回l1
,因为l1
是True
所以,你得到的结果是这样的。
short circuit evaluation
不过是A and B
的情况下,如果A的计算结果为True,则继续计算B并返回B的结果。如果A的计算结果为False,则不计算B。返回A的结果A or B
的情况下,如果A的计算结果为True,那么计算B没有意义。只需返回A的结果。如果A的计算结果为False,则返回B的结果注:
相关问题 更多 >
编程相关推荐