2012-09-22 78 views
1

的我試圖生成的N+1整數所有集合n_j這樣 n_0 < n_1 < ... < n_N每個n_j運行在幾個間隔:n_min <= n_j < n_max生成有序集合整數

我目前的解決方案:

def generate_partitions(nmin, nmax,N): 
    n0 = range(nmin, nmax) 
    return (x for x in itertools.product(n0, repeat=N+1) 
      if len(set(x)) == N+1 and list(x) == sorted(x)) 

雖然它的工作原理,這顯然是相當愚蠢的。我覺得應該有一個更好的itertools爲基礎的解決方案,但我無法弄清楚到目前爲止,並會欣賞任何提示或指針。

+0

你的反斜槓是多餘的;當匹配括號,括號或花括號時,不需要它們。 –

+0

啊,很高興知道,謝謝! –

回答

2

itertools.combinations(range(nmin, nmax), N + 1)怎麼樣?

+0

ooops,facepalm –