Используя sets
вы можете сделать:
a = [1,2,3,4]
b = [8,7,9,2,1]
diff = (set(a) | set(b)) - (set(a) & set(b))
(set(a) | set(b))
- это объединение, set(a) & set(b)
- это пересечение, и, наконец, вы делаете различие между двумя наборами, используя -
.
Ваша ошибка возникает, когда вы удаляете элементы в строках c.remove(c[i])
и d.remove(d[j])
. Действительно, общими элементами являются e[i]
и f[j]
, тогда как c
и d
являются списками, которые вы обновляете.
Чтобы исправить ошибку, вам нужно всего лишь изменить эти строки на c.remove(e[i])
и d.remove(f[j])
.
Обратите внимание, что ваш метод удаления элементов в обоих списках не будет работать, если список может содержать дубликаты .
Рассмотрим, например, случай a = [1,1,2,3,4]
и b = [8,7,9,2,1]
.