现在我有两个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
如果它是一维数组,我知道该怎么做,但是不知道如何使用二维数组。非常感谢。
答案 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)))
编辑:使用这种方法,您可能需要注意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)))