如何比较2个相同长度列表中的精确列表元素?

时间:2017-02-21 19:47:27

标签: python list

尝试比较2个列表的相似度,以查看2个列表匹配的次数。

我的代码是:

list1 = [1,0,1,0,1,1,0,0]
list2 = [1,0,0,1,0,0,1,1]

def listCompare(lst1, lst2):
    for i in lst1:
        for j in lst2:
            if i == j:
                return i

print(listCompare(L1, M1))

这应该返回2,因为只有第一个和第二个项目(索引01)在两个列表中都相同。

4 个答案:

答案 0 :(得分:3)

您可以在两个列表上映射operator.eq,然后sum映射:

>>> import operator
>>> sum(map(operator.eq, list1, list2))
2

您将笛卡尔积(list1的每个项目与list2的每个项目进行了比较),而不是元素相等。

答案 1 :(得分:1)

这个怎么样,

list1 = [1,0,1,0,1,1,0,0]
list2 = [1,0,0,1,0,0,1,1]

n = sum(i==j for i, j in zip(list1, list2))

print(n)
# 2

答案 2 :(得分:1)

我想你只是想:

list1 = [1,0,1,0,1,1,0,0]
list2 = [1,0,0,1,0,0,1,1]

def listCompare(lst1, lst2):
    matches = 0
    for i in range(0, len(lst1)):
        if lst1[i] == lst2[i]:
            matches += 1
    return matches

print(listCompare(list1, list2))

也就是说,只需使用一个索引遍历两个列表,并创建一个名为matches的变量来计算找到的匹配数。

答案 3 :(得分:0)

def listCompare(lst1, lst2):
    for i in lst1:
        for j in lst2:
            if i == j:
                return i

您的代码将list1中的每个项目与list2中的所有项目进行比较。 您可以使用此代码。

list1 = [1,0,1,0,1,1,0,0]
list2 = [1,0,0,1,0,0,1,1]

def listCompare(lst1, lst2):
    i=0
    counter=0
    for j in lst1:
        if lst1[i]==lst2[i]:
            counter+=1
            i+=1
        else:
            i+=1
    return counter

print(listCompare(list1,list2))