如何计算Python中二维数组中相同元素的个数?
How to calculate the number of same elements in 2D arrays in Python?
现在我有两个二维数组,我想比较一下
['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' 中的公共元素):
5
您可以使用 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)))
现在我有两个二维数组,我想比较一下
['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' 中的公共元素):
5
您可以使用 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)))