擅长:python、mysql、java
<p>这是一个简单的实现,使用列表理解,与numpy相比,不确定性能</p>
<pre><code>def gen(n,k):
if(k==1):
return [[n]]
if(n==0):
return [[0]*k]
return [ g2 for x in range(n+1) for g2 in [ u+[n-x] for u in gen(x,k-1) ] ]
> gen(3,4)
[[0, 0, 0, 3],
[0, 0, 1, 2],
[0, 1, 0, 2],
[1, 0, 0, 2],
[0, 0, 2, 1],
[0, 1, 1, 1],
[1, 0, 1, 1],
[0, 2, 0, 1],
[1, 1, 0, 1],
[2, 0, 0, 1],
[0, 0, 3, 0],
[0, 1, 2, 0],
[1, 0, 2, 0],
[0, 2, 1, 0],
[1, 1, 1, 0],
[2, 0, 1, 0],
[0, 3, 0, 0],
[1, 2, 0, 0],
[2, 1, 0, 0],
[3, 0, 0, 0]]
</code></pre>