我试图在python中创建一组交集

时间:2013-07-25 20:00:39

标签: python recursion set

然后再设置{'a', 'b', 'c'}{'c', 'd'}{'d','e','f'}。我希望得到类似列表[{'a', 'b', 'c'}, {'d'}, {'e','f'}]的内容。我的第一个猜测是,这将有助于递归。 set 1,set2 - set1,set3 - (set1& set2)。我认为我对递归函数的体验更多的是沿着另一个方向移动的因子示例。在此先感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

可以通过递归来完成此操作,但不是必需的。使用迭代来做这件事是直截了当的:

>>> 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'])]

答案 1 :(得分:0)

我喜欢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}]