如何在Python中计算2D数组中相同元素的数量?

时间:2019-07-19 15:17:24

标签: python arrays sum checksum

现在我有两个2D数组,我想比较

['A','B','E','G', 'T']['A','C','E','N','M']
['a','f','c','h','u']['a','b','c','y','l']

并计算相同的元素。

aaa = [['A','B','E','G','T'],['a','f','c','h','u']]
bbb = [['A','C','E','N','M'],['a','b','c','y','l']]

因此在此示例中,输出为2 + 2

如果它是一维数组,我知道该怎么做,但是不知道如何使用二维数组。非常感谢。

2 个答案:

答案 0 :(得分:2)

您可以使用zip()内置方法来配对元素:

aaa = [['A','B','E','G','T'],['a','f','c','h','u']]
bbb = [['A','C','E','N','M'],['a','b','c','y','l']]

c = sum(ii[0] == ii[1] for i in zip(aaa, bbb) for ii in zip(*i))
print(c)

打印:

4

答案 1 :(得分:0)

您可以使用itertools.chain展平列表列表,并使用zip配对那些展平列表的元素。

from itertools import chain

aaa = [['A','B','E','G','T'], ['a','f','c','h','u']]
bbb = [['A','C','E','N','M'], ['a','b','c','y','l']]

c = sum(a == b for a, b in zip(chain(*aaa), chain(*bbb)))

编辑:使用这种方法,您可能需要注意aaabbb具有相同的尺寸,因为下面的代码将产生与上面相同的结果。

from itertools import chain

aaa = [['A','B','E','G'], ['T','a','f','c','h','u']]
bbb = [['A','C','E','N','M','a'], ['b','c','y','l']]

c = sum(a == b for a, b in zip(chain(*aaa), chain(*bbb)))