python - 生成 3 个总和为 n 的数字

标签 python list-comprehension

我需要生成三个自然数,其和为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/

相关文章:

python - 复杂的主元和重采样

python - 在 PySpark 中展平动态嵌套结构(结构内的结构)

python - 绝对导入在 Python 3.7 中不起作用

Python:列表理解以分配不同的值

记录了额外变量的 Python 列表理解?

Python 多处理导入错误

Python - if True :? 有什么用

python - 高效计算过滤列表的大小

python - 从实例列表中创建一个简单列表的 pythonic 习惯用法是什么?

Python:在列表理解中重复元素?