簡體   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