Разница списков. Отличие первого от второго и наоборот. Python

Рейтинг: 0Ответов: 1Опубликовано: 28.02.2023

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

def compute_difference(first: list, second: list) -> tuple:
    first_second = []
    second_first = []
    for val in first:
        if val in first == val in second:
            first, second.remove(val)
        elif val not in second:
            first_second.append(val)
    for val in second:    
        if val not in first:
            second_first.append(val)
    print(f'first-second: {first_second}')
    print(f'second_first: {second_first}')
    return first_second, second_first
compute_difference(['a', 'b', 'c', 'c', 'd'], ['c', 'd', 'e'])
assert ['a', 'b', 'c'], ['e']

на выводе возвращает first-second: ['a', 'b'] second_first: ['e']

Ответы

▲ 0Принят

in и == имеют одинаковый приоритет. Расставьте скобки:

@>>> a = [0, 1]
@>>> b = [1, 2]
@>>> v = 1
@>>> v in a == v in b
False
@>>> (v in a) == (v in b)
True