繁体   English   中英

Python 在 class K 中生成 N 的组合

[英]Python generate combinations of N in class K

我有这个代码

def array_combos(n,k):

    arCombos = []
    i = 0
    a = [0]*k

    while i > -1:
        for j in range(i+1, k):
            a[j] = a[j-1]+1
        i=j
        print(a)
        arCombos.append(a)
        while a[i] == i + n - k:
            i -= 1
        a[i] += 1

    return arCombos

print(a) 打印正确的值,但列出 function 返回的列表被单个数组填充 n 次。 如果我使用popolate list function 的yield insted 可以完美地工作。 我们能帮忙吗? Tks

arCombos.append(a)始终与 append 相同,并且仅是a实例,因此您将其多次保存到主arCombos ,但仍有一个实例不断被修改。

使用类似的代码传递它的副本,更多信息请参见获取列表副本

arCombos.append(a[:])
arCombos.append(list(a))

使用 n 大小集合的最大 s 个元素(其中 s <n)< div><div id="text_translate"><p> 我知道如何使用 itertools 获得所有可能的替换组合,但我想通过使用较大集合中有限数量的元素来限制替换组合的数量。</p><p> 举个例子,我有一套</p><p>[0,1,2]</p><p> 我想获得带有替换的k组合(k = 4),但使用一组[0,1,2]中最多2个不同的元素</p><p>所以可以出现在每个组合中的元素集是:</p><pre> [0,1], [1,2], [0,2].</pre><p> 在这里,我也想避免重复组合,所以在这个例子中[0,0,0,0],[1,1,1,1]或[2,2,2,2]不应该重复。</p><p> 此示例的 output:</p><pre> [0,0,0,0] [0,0,0,1] [0,0,1,1] [0,1,1,1] [1,1,1,1] [1,1,1,2] [1,1,2,2] [1,2,2,2] [2,2,2,2] [0,0,0,2] [0,0,2,2] [0,2,2,2]</pre><p> 我希望我很清楚。 </p></div></n)<>

[英]Generate k-combinations with replacement of n-size set using maximum s-number of elements of n-size set (where s<n)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM