Python: найти все ли элементы в списках одинаково, кроме двух чисел - PullRequest
0 голосов
/ 17 мая 2018

Интересно, как проверить, совпадают ли два списка чисел, кроме ровно 2 чисел

if list1 == list2: # + except 2 numbers

Ответы [ 3 ]

0 голосов
/ 17 мая 2018

Если важен порядок элементов списка, вы можете использовать что-то вроде этого:

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

Если порядок не важен, а повторяющиеся элементы не имеют значения, вы также можете использовать пересечение множеств (&) и сравните длину:

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
0 голосов
/ 17 мая 2018
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

При этом будут учтены дубликаты значений, порядок не учитывается.

0 голосов
/ 17 мая 2018
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
...