比较两个相同值的列表

时间:2020-10-08 00:34:13

标签: python list binary

假设我有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,但不确定如何实现。

1 个答案:

答案 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