Python 基于条件从集合生成唯一的有序子集
在我的离散数学课上,试图解决python内部子集的生成问题。我有一个集合,可以拆分为子集,这些子集是根据特定条件和特定大小排序的 例如:子集={x1,x2,x3}⊆ {5,10,15,20,25}和x1Python 基于条件从集合生成唯一的有序子集,python,discrete-mathematics,Python,Discrete Mathematics,在我的离散数学课上,试图解决python内部子集的生成问题。我有一个集合,可以拆分为子集,这些子集是根据特定条件和特定大小排序的 例如:子集={x1,x2,x3}⊆ {5,10,15,20,25}和x1
def perm(elements):
if len(elements) <= 1:
yield elements
else:
for i in range(len(elements)):
for p in perm(elements[:i] + elements[i+1:]):
yield [elements[i]] + p
def perm(元素):
if len(elements)除非我误解了您所寻找的内容,否则它已经实现了获取所有唯一子集的功能
假设您只是在寻找要排序的每个组合。只要对初始输入进行排序,组合也将被排序
导入itertools
元素=排序({5,10,15,20,25})
子集大小=3
打印(列表(itertools.组合(元素、子集大小)))
产生:
[(5, 10, 15),
(5, 10, 20),
(5, 10, 25),
(5, 15, 20),
(5, 15, 25),
(5, 20, 25),
(10, 15, 20),
(10, 15, 25),
(10, 20, 25),
(15, 20, 25)]
你可以通过对原始输入进行排序来对输出进行排序。不,你是对的,这正是我想要的。问题是,我也在试着推出我自己的,我只是在itertools文档页面上工作过,但我仍然不太清楚算法本身是如何工作的。我想你得多看一点。你可以随时查看源文件。如果控制,请查找字符串。。function::combinations(iterable,r)
有一个大致等效的python实现。