【发布时间】:2014-11-16 23:41:23
【问题描述】:
我目前正在尝试解决如何让这段代码遍历下面的不同数字组合以等于 1200。这工作正常但是我希望代码限制它探索的数字并使用 只有 5 个不同的数字。
E.g1 70、260、280、290、300 = 1200,使用 5 个数字。我只想要这些组合。
例如 10、20、30、40、110、120、160、190、240、280 = 1200,使用 10 个数字。我不想要小于 5 或大于 5 的组合,比如这种组合。
我不太了解python,我觉得它是一件简单的事情,但我的编码知识有限。
#!/usr/local/bin/python
from itertools import combinations
def find_sum_in_list(numbers, target):
results = []
for x in range(len(numbers)):
results.extend(
[
combo for combo in combinations(numbers ,x)
if sum(combo) == target
]
)
print results
if __name__ == "__main__":
find_sum_in_list([10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,210,220,230,240,250,260,270,280,290,300], 1200)
感谢您的帮助。非常感谢。
【问题讨论】:
-
两件事:1)我看不出你的函数是如何递归的。它不调用自己。 2)如果你只想要5个元素的组合,为什么要循环
x的不同值并要求x元素的组合? -
对不起,这种数学超出了我的范围。我尝试将 5 放入 x 中,它确实有效。在我看到我的错误之前,我需要有人指出我。谢谢。
标签: python recursion limit combinations