我需要生成三个自然数,其和为n
。第一个数字可以是 max x
,第二个数字可以是 max y
,最后一个数字可以是 max z
。目前我正在做这个
def f(n):
return [(i, j, k)
for i in range(x+1)
for j in range(y+1)
for k in range(z+1)
if i + j + k == n]
但是n
非常大,大约500
并且x,y,z
小于200。目前我有3个变量(i, j, k)
由 3 个范围生成。这可以使用列表理解中的两个循环来完成吗?
最佳答案
是的,
您可以只计算第三个数字并检查它是否在正确的范围内 (Martijn Pieters♦)。
[(i, j, n - i - j) for i in range(x+1) for j in range(y+1) if 0 <= n - i - j <= z]
关于python - 生成 3 个总和为 n 的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31337478/