[英]Display all combinations of numbers based on a sum chosen
最近,我插入了一个代码:
def subset_sum(numbers, target, partial=[]):
s = sum(partial)
# check if the partial sum is equals to target
if s == target:
print(partial, target)
if s >= target:
return # if we reach the number why bother to continue
for i in range(len(numbers)):
n = numbers[i]
remaining = numbers[i+1:]
subset_sum(remaining, target, partial + [n])
if __name__ == "__main__":
subset_sum([1, 2, 3] + [1, 2, 3], 5)
目标是获得列出的所有数字组合,这些组合可以相加以满足所需的总和。 比如我有两个列表[1,2,3]和[2,3,4],目标是得到这些数字的所有等于3的组合。答案应该是[1,2]等等..
但问题是我需要 Python 到 select 每个列表中只有一个元素,而不是更多。 我该如何解决这个问题?
非常感谢!
你的意思是这样的:
target = 5
a = [1,2,3,4,5,6,7,8,9]
b = [1,2,3,4,5,6,7]
combinations = {(x,y) for x in a for y in b if x+y==target}
它在第一个列表和第二个列表上进行迭代,并且仅当它们加起来达到您想要的目标时才添加对。
但是,由于a
和b
不是集合,因此可能存在重复的条目,因此可能存在重复的元组。 因此,我建议您在继续之前将它们转换为集合,如下所示:
set_a = {x for x in a}
这也是我将结果放入集合的原因。 对于重复条目和大尺寸,它会很快变得非常混乱。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.