假设我有3个列表:
a = [0,0,0,1,1]
b = [1,0,0,0,0]
c = [1,1,1,0,0]
我想在同一位置有1的时候返回False,所以对于'b&c'它将返回False,因为它们两个在索引0,'a&b'和'a&c'处都有一个。在这种情况下应该返回True。
我要这样做的方式是:
for i in range(0, len(a)):
if a[i] == 1 and b[i] == 1:
return False
return True
尽管我觉得这效率很低。有没有更简单,更有效的方法来做到这一点?我当时在考虑使用二进制AND,但不确定如何实现。
答案 0 :(得分:0)
您要寻找一支班轮吗?在这里:
any([False if a[i] == 1 and b[i] == 1 else True for i in range(0, len(a))])
对不起,没有测试。这是经过测试的修改版本:
>>> a = [0,0,0,1,1]
>>> b = [1,0,0,0,0]
>>> c = [1,1,1,0,0]
>>> def f(a,b):
... return all([False if a[i] == 1 and b[i] == 1 else True for i in range(0, len(a))])
...
>>> print(f(a,b), f(b,c), f(a,c))
True False True