python - 计算导致集合的给定大小的子集的组合

标签 python algorithm set subset

我想得到给定长度的所有可能的子集,这些子集导致真实的集合。因此,对于集合 [a,b,c] 和子集大小 1 和 2,我想计算:

[[a,b],[c]] , [[b,c],[a]] , [[a,c],[b]]

我一直在试验来自 Algorithm to calculate power set (all possible subsets) of a set in R 的代码,但该算法将生成所有子集,而不仅仅是那些导致集合的子集。

我正在尝试解决尺寸约为 30 的问题。我想计算每个子集组合的分数,只保留最好的,这样我希望内存没有困难。选择的编程语言是python。

最佳答案

如何创建长度为 2 的组合,并通过计算与原始集合的差来生成余数?这就是我的意思:

from itertools import combinations

s = {'a', 'b', 'c'}

res = [(set(comb), s.difference(comb)) for comb in combinations(s, 2)]

生成:

[({'a', 'c'}, {'b'}), ({'b', 'c'}, {'a'}), ({'a', 'b'}, {'c'})]

关于python - 计算导致集合的给定大小的子集的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26679271/

相关文章:

python - Django 如何从给定模型实例的自定义字段调用方法?

Python:找出派生类上的哪个方法称为基类方法

python - 模式计算器 Python

java - 二进制 SVM 中的错误分类

Java Set,包含,错误结果

python - 在两个列表中查找重叠对象的最快方法

algorithm - 如何测试整数范围是否与整数列表重叠?

python - 从排序数组到排序多项式数组的算法

python - 如何将列表与常见元素合并,其中这些元素本身是列​​表/元组?

python - 访问集合的唯一元素