Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中布尔列表的和/或元素方面_Python_List_Boolean - Fatal编程技术网

python中布尔列表的和/或元素方面

python中布尔列表的和/或元素方面,python,list,boolean,Python,List,Boolean,我在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, Tr

我在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)

我怎样才能做到元素级的比较又好又干净呢?

你可以使用列表理解

l3=[zipl1,l2中i,j的i和j] l4=[i或j代表i,j在zipl1,l2中] 当你在做

l3=l1和l2 l4=l1或l2 然后它就变成了

l3=布尔1和l2 l4=布尔1或l2 既然l1是非空列表,那么 booll1=True

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

在l4=l1或l2的情况下,同样由于短路评估,l1返回,因为l1为真

所以,你得到的结果是这样的。 短路评估只是-

对于A和B,如果A的计算结果为真,则继续计算B并返回B的结果。如果A的计算结果为假,则不计算B。返回A的结果。 False并打印“hello” >>>假的 True并打印“hello” >>>你好 在A或B的情况下,如果A的计算结果为真,则计算B没有意义。只返回A的结果。如果A的计算结果为假,则返回B的结果。 真或1/0 >>>真的 错误或1/0 >>>ZeroDivision错误:被零除 注:

bool[]=False bool[1,2,'a']=True bool['False']=True
您可以使用列表理解

l3=[zipl1,l2中i,j的i和j] l4=[i或j代表i,j在zipl1,l2中] 当你在做

l3=l1和l2 l4=l1或l2 然后它就变成了

l3=布尔1和l2 l4=布尔1或l2 既然l1是非空列表,那么 booll1=True

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

在l4=l1或l2的情况下,同样由于短路评估,l1返回,因为l1为真

所以,你得到的结果是这样的。 短路评估只是-

对于A和B,如果A的计算结果为真,则继续计算B并返回B的结果。如果A的计算结果为假,则不计算B。返回A的结果。 False并打印“hello” >>>假的 True并打印“hello” >>>你好 在A或B的情况下,如果A的计算结果为真,则计算B没有意义。只返回A的结果。如果A的计算结果为假,则返回B的结果。 真或1/0 >>>真的 错误或1/0 >>>ZeroDivision错误:被零除 注:

bool[]=False bool[1,2,'a']=True bool['False']=True 您可以在列表中使用内置和方法:

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

l3 = [all(z) for z in zip(l1, l2)]
l4 = [any(z) for z in zip(l1, l2)]

print(l3)
print(l4)
输出

[False, False, True]
[True, True, True]
您还可以使用内置方法:

输出:

[False, False, True]
[True, True, True]
您可以在列表中使用内置和方法:

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

l3 = [all(z) for z in zip(l1, l2)]
l4 = [any(z) for z in zip(l1, l2)]

print(l3)
print(l4)
输出

[False, False, True]
[True, True, True]
您还可以使用内置方法:

输出:

[False, False, True]
[True, True, True]

整洁的虽然如果有两个以上的列表,这会很长。当使用布尔值列表进行切片时,短路评估非常不方便。@pphero0287您试过我的答案了吗?@Ann Zen,是的,谢谢,您的解决方案类似。太好了!虽然如果有两个以上的列表,这会很长。当使用布尔值列表进行切片时,短路评估非常不方便。@pphero0287您尝试过我的答案了吗?@Ann Zen,是的,谢谢,您的解决方案类似。