Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
一组n个对象,并在python中显示k元素子集_Python_Subset_Element_Sage - Fatal编程技术网

一组n个对象,并在python中显示k元素子集

一组n个对象,并在python中显示k元素子集,python,subset,element,sage,Python,Subset,Element,Sage,假设您有一组n个对象,并且希望列出其k元素子集(即 具有精确m个元素的子集)由递归函数求解而不使用列表(itertools.combines) 例如k_子集({1,2,3},2) 展示 [{1, 2}, {1, 3}, {2, 3}] 这将是使用递归的组合代码,这将为您提供给定列表的所有子集和所需长度的子集 l1 = [1, 2, 3] s = 2 unique = [] def combination(set): if set == []: return [[]]

假设您有一组n个对象,并且希望列出其k元素子集(即 具有精确m个元素的子集)由递归函数求解而不使用
列表(itertools.combines)
例如
k_子集({1,2,3},2)
展示

[{1, 2}, {1, 3}, {2, 3}]

这将是使用递归的
组合
代码,这将为您提供给定列表的所有子集和所需长度的子集

l1 = [1, 2, 3]
s = 2
unique = []
def combination(set):
    if set == []:
        return [[]]

    sub = combination(set[1:])
    # This will give you all the subsets of given list and This is also the return variable of the function.
    all_combination = (sub + [[set[0]] + x for x in sub])
    ########################################################
    # This for loop will give you a subsets of desire length.
    for i in range(len(all_combination)):
        if int(len(all_combination[i])) == s and all_combination[i] not in unique:
            unique.append(all_combination[i])
    #########################################################
    return all_combination

print(combination(l1))
print(unique)

你是说有k个元素的子集吗?你能自己演示一下解决这个问题的方法吗?是的,有k个元素的子集Finn我知道算法,算法组合输入S,一组n个对象m,你想从中选择的对象数量S,如果jSj=m let result=fSg,则m n输出大小为n do的S的子集,否则let result=;对于s2 s,让U=Sns将组合(U,m)添加到结果返回结果Scott Hunter您的问题是什么?看来你忘了写下半段了。你的第一句话以“假设你想做这个和那个”开头,然后就停了。好吧,答案是正确的,但不是我问题的确切答案。我希望代码只显示这些“[{1,2},{1,3},{2,3}]”而不是全部。因为我们使用的是子集而不是有序对。例如,[{1,1}]是不可接受的,因为我们使用了1次,或者{1,2}和{2,1}是相同的。@AminAmin现在检查我是否更新了我的答案。这是根据你的愿望。