计算列表列表中的不匹配项

时间:2017-04-19 01:10:23

标签: python python-2.7

我有两个列表arr_list1和arr_list2,它们都是列表列表。它们的大小完全相同。我需要计算每个列表中两者之间有多少元素不同。例如,

arr_list1 = [[0,1,1],[0,1,0],[1,0,1]]
arr_list2 = [[0,1,0],[1,1,1],[1,0,1]]

我想得到结果=(1,2,0)

这样做的“简单”方法是否需要循环?

3 个答案:

答案 0 :(得分:1)

import numpy as np
arr_list1 = [[0,1,1],[0,1,0],[1,0,1]]
arr_list2 = [[0,1,0],[1,1,1],[1,0,1]]
print np.sum(np.asarray(arr_list1) != np.asarray(arr_list2),axis=1)

答案 1 :(得分:0)

您可以使用zip来比较差异:

arr_list1 = [[0,1,-1],[0,1,0],[1,0,1]]
arr_list2 = [[0,1,0],[1,1,1],[1,0,1]]

def get_differences(arr_list1, arr_list2):
    all_differences = []
    for a, b in zip(arr_list1, arr_list2):
        sum_differences = 0
        for a_item, b_item in zip(a, b):
            if a_item != b_item:
                sum_differences += 1
        all_differences.append(sum_differences)
    return all_differences

print get_differences(arr_list1, arr_list2)

答案 2 :(得分:0)

只需迭代两个列表并使用sum()方法计算不匹配数

a1 = [[0,1,1],[0,1,0],[1,0,1]]
a2 = [[0,1,0],[1,1,1],[1,0,1]]


print [sum([a1[i][j]!=a2[i][j] for j in range(len(a1[i]))]) for i in range(len(a1))]

输出:

[1, 2, 0]