При работе с математическими наборами вы действительно должны использовать предоставленный тип set
в Python.Я написал ваши наборы как наборы Python:
a = {1,2,3,4}
b = [{1},{2,3},{3,4}]
Обратите внимание, что b
- это список наборов;Ваша топология на a
.Различия между наборами можно найти с помощью оператора -
(с двумя наборами A
и B
, A-B
совпадает с математическим A\B
):
res = [a-el for el in b]
Вывод:
In [11]: res
Out[11]: [{2, 3, 4}, {1, 4}, {1, 2}]
это список различий между наборами
РЕДАКТИРОВАТЬ Вот способ преобразовать ваши входные данные так, как вы хотели:
Прежде всего, предложите пользователю записать каждый набор в скобках, чтобы иметь регулярный синтаксис, например, например: (1),(1,2),(2,3,4)
Теперь нам нужно регулярное выражение для поиска наборов в результирующей строке "(1),(1,2),(2,3,4)"
:
import re
inp_list = re.findall(r"(?:\(([\d,]+))", inp_string)
Теперь мы можем начать с решения, упомянутого выше:
res = [{int(number) for number in inp.split(",")} for inp in inp_list]
Чтобы понять регулярное выражение, нажмите здесь