找出两个数组中相同位置的1的数量

7 投票
6 回答
6493 浏览
提问于 2025-04-15 11:40

我有两个列表:

A = [0,0,0,1,0,1]
B = [0,0,1,1,1,1]

我想找出这两个列表中在同一个位置上有多少个1。

对于这两个数组,答案是2。

6 个回答

1

我不是Python方面的专家,但从第一个数组的开始到结束用一个简单的循环有什么问题呢?

在C#中,我会这样做:

int match=0;

for (int cnt=0; cnt< A.Count;cnt++)
{
    if ((A[cnt]==B[cnt]==1)) match++;
}

在你们的语言中,这样做可以吗?

1

出于一种想要挑战常规的心态,我提供了以下解决方案:

A = [0,0,0,1,0,1]
B = [0,0,1,1,1,1]

print len(set(i for i, n in enumerate(A) if n == 1) &
          set(i for i, n in enumerate(B) if n == 1))

(Drakosha的建议是解决这个问题更合理的方法。这只是展示了我们可以用不同的角度来看待同一个问题。)

19

这里有一种更简洁、希望更符合Python风格的方法:

>>> A=[0,0,0,1,0,1]
>>> B=[0,0,1,1,1,1]

x = sum(1 for a,b in zip(A,B) if (a==b==1))
>>> x
2

撰写回答