比较Python中顺序和重复项起作用的两个浮点列表

比较Python中顺序和重复项起作用的两个浮点列表,python,list,difference,Python,List,Difference,我想比较两个列表之间的位置和值的差异。我需要知道listB与listA有多相似,它不仅包含相同的值,而且这些值位于相同的位置 from collections import Counter listA = [0.01, 0.02, 0.04, 0.03] listB = [0.01, 0.02, 0.03, 0.04] def compareListMethod1(a, b): return set(a).intersection(b) def compareListMethod2

我想比较两个列表之间的位置和值的差异。我需要知道
listB
listA
有多相似,它不仅包含相同的值,而且这些值位于相同的位置

from collections import Counter

listA = [0.01, 0.02, 0.04, 0.03]
listB = [0.01, 0.02, 0.03, 0.04]

def compareListMethod1(a, b):
    return set(a).intersection(b)

def compareListMethod2(a, b):
    c1 = Counter(a)
    c2 = Counter(b)
    diff = c1-c2
    return list(diff.elements())

def compareListMethod3(a, b):
    count = Counter(a) # count items in a
    count.subtract(b)  # subtract items that are in b
    diff = []
    for x in a:
        if count[x] > 0:
           count[x] -= 1
           diff.append(x)
    return diff

print(compareListMethod1(listA, listB)) # returns {0.02, 0.01, 0.04, 0.03}
print(compareListMethod2(listA, listB)) # returns []
print(compareListMethod3(listA, listB)) # returns []
所需的输出将显示两个列表彼此不同的次数。在本例中,前两个条目是精确的,但索引2和3处的条目是不同的-因此两个列表之间存在2个差异


感谢您的指导

如果我理解正确,这应该可以:

sum(a != b for a, b in zip(listA, listB))
给出
2的预期输出


请注意,因为您的问题说明说明顺序很重要,所以集合在这里没有用处,因为它们没有顺序。

如果
listB=[0.02,0.04,0.03,0.01]
?差异的数量是1还是4?他说位置很重要,所以我会说是4。