尝试比较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
,因为只有第一个和第二个项目(索引0
和1
)在两个列表中都相同。
答案 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))