Python:查找列表中的所有元素是否相同,除了2个数字

时间:2018-05-16 22:28:53

标签: python list numbers int

我想知道如何检查两个数字列表是否相同,除了正好是2个数字

if list1 == list2: # + except 2 numbers

3 个答案:

答案 0 :(得分:2)

def differ_by_two(l1, l2):
    return sum(1 for i,j in zip(l1, l2) if i!=j) == 2

实施例

>>> differ_by_two([1,2,3],[1,4,5])
True
>>> differ_by_two([1,2,3,4,5],[6,7,8,9,10])
False

答案 1 :(得分:2)

如果列表元素的顺序很重要,您可以使用以下内容:

if sum(i != j for i, j in zip(list1, list2)) == 2:
    # the two lists are equal except two elements

如果顺序不重要,重复的元素无关紧要,你也可以使用set intersection(&)并比较长度:

if len(set(list1) & set(list2)) == len(list1) - 2:
    # the two list are equal except two elements

如果订单不重要,但重复的元素很重要,请使用相同的方法,但使用collections.Counter

from collections import Counter
if len(Counter(list1) & Counter(list2)) == len(list1) - 2:
    # the two list are equal except two elements

答案 2 :(得分:0)

def SameBarTwo(l1, l2):
    a = len(l2)
    for i in range(len(l2)):
        if l2[i] in l1:
            l1.remove(l2[i])
            a -= 1
    return a == 2

这将为重复值提供便利,不会考虑订单。