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

如何在Python中计算2D数组中相同元素的数量?,python,arrays,sum,checksum,Python,Arrays,Sum,Checksum,现在我有两个二维数组,我想比较一下 ['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 我知道如果是一维数组,该怎么

现在我有两个二维数组,我想比较一下

['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

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

您可以使用
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
编辑:如果不关心元素的顺序,可以使用集合:

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

c = sum(len(set(i1) & set(i2)) for i1, i2 in zip(aaa, bbb))
print(c)
打印(第一个数组“A”、“E”、“C”和第二个数组“A”、“C”中的公共元素):

您可以使用
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
编辑:如果不关心元素的顺序,可以使用集合:

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

c = sum(len(set(i1) & set(i2)) for i1, i2 in zip(aaa, bbb))
print(c)
打印(第一个数组“A”、“E”、“C”和第二个数组“A”、“C”中的公共元素):


您可以使用
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)))
编辑:使用此方法,您可能需要注意
aaa
bbb
具有相同的维度,因为以下代码将产生与上述相同的结果

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

您可以使用
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)))
编辑:使用此方法,您可能需要注意
aaa
bbb
具有相同的维度,因为以下代码将产生与上述相同的结果

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

这些是列表,虽然我已经编辑了我的标题,但不知道为什么它仍然处于保留状态这些是列表,虽然我已经编辑了我的标题,但不知道为什么它仍然处于保留状态嗨,安德烈,如果我不关心元素的顺序,只对相互元素求和怎么办?例如,aaa=[['A','E','C','G','T'],bbb=[[A','C','E','N','M'],有三个相互的元素,但输出不是3@Cecilia看看我最新的回答Hi Andrej,如果我不关心元素的顺序,只对相互的元素求和怎么办?例如,aaa=[['A','E','C','G','t'],bbb=[['A','C','E','N','M'],有三个相互的元素,但输出不是3@Cecilia查看我的最新答案