В Python, как можно вычесть два неповторимых неупорядоченных списка? Скажем, у нас есть a = [0,1,2,1,0]
и b = [0, 1, 1]
Я бы хотел сделать что-то вроде c = a - b
и иметь c
be [2, 0]
или [0, 2]
порядок для меня не имеет значения. Это должно вызывать исключение, если a не содержит всех элементов в b.
Обратите внимание, что это отличается от наборов! Мне не интересно находить разницу в наборах элементов в и b, меня интересует различие между фактическими наборами элементов в и b.
Я могу сделать это с помощью цикла for, просматривая первый элемент b в a, а затем удаляя элемент из b и из a и т.д. Но это мне не нравится, это было бы очень неэффективно (заказ времени O(n^2)
), в то время как это не должно быть проблемой для этого в O(n log n)
времени.