我试图用python创建一个集合交叉点列表

我试图用python创建一个集合交叉点列表,python,recursion,set,Python,Recursion,Set,因此,给出集合{'a','b','c'},{'c','d'},{'d','e','f'}。我想要一个类似列表的[{'a','b','c'},{'d'},{'e','f'}]。我的第一个猜测是,这将有利于递归。第1组,第2组-第1组,第3组-(第1组和第2组)。我认为我在递归函数方面的经验更多的是关于阶乘的例子,它朝着另一个方向发展。提前感谢您的帮助 可以通过递归实现,但不是必需的。通过迭代实现这一点非常简单: >>> sets = {'a', 'b', 'c'}, {'c',

因此,给出集合
{'a','b','c'}
{'c','d'}
{'d','e','f'}
。我想要一个类似列表的
[{'a','b','c'},{'d'},{'e','f'}]
。我的第一个猜测是,这将有利于递归。第1组,第2组-第1组,第3组-(第1组和第2组)。我认为我在递归函数方面的经验更多的是关于阶乘的例子,它朝着另一个方向发展。提前感谢您的帮助

可以通过递归实现,但不是必需的。通过迭代实现这一点非常简单:

>>> sets = {'a', 'b', 'c'}, {'c', 'd'}, {'d','e','f'}
>>> unique = []
>>> seen = set()
>>> for s in sets:
...  unique.append(s - seen)
...  seen |= s
... 
>>> seen
set(['a', 'c', 'b', 'e', 'd', 'f'])
>>> unique
[set(['a', 'c', 'b']), set(['d']), set(['e', 'f'])]

我喜欢python,因为它的列表和集合理解。我认为这个问题突出了这个功能的便利性

seta = {'a', 'b', 'c'}
setb = {'c', 'd'}
setc = {'d','e','f'}

list_of_sets = [seta, {b for b in setb: if b not in seta}, {c for c in setc: if c not in seta}]

你能详细说明一下输出需要是什么吗?这个问题的根源是什么?这三个集合的交集是空集合{}。@TomRose所需的输出在问题
[{'a','b','c'},{'d'},{'e','f'}]
@agf中陈述得非常清楚。这是一个好问题,但他没有:“包括尝试的解决方案,为什么它们不起作用。”他只需要编辑它。结果列表与
。。。(设置1和设置2)
。你的意思可能是
。。。(set1 | set2)
相反。这不会扩展到更多的集合,这正是他在谈论递归时所考虑的。解释一下
|=
巫术plz@Stephan