gpt4 book ai didi

python - 用它们的所有可能组合的 2 位数字随机填充一个列表,以便列表元素的总和给出给定的数字

转载 作者:太空宇宙 更新时间:2023-11-04 01:45:08 25 4
gpt4 key购买 nike

我知道我提到的标题唤起了这里已经提到的许多其他主题(比如库 itertools),但没有一个能给我一个解决方案。我的问题理解起来并不复杂。我有 2 个数字(比如说 1 和 2),我想把它们放在一个列表中,这样列表中数字的总和就会给我一个数字(比如 5),我需要知道这个列表中所有可能的组合。例如:

a = 1
b = 2
L = [1, 2, 2] -> 5
L = [1, 1, 1, 1, 1] -> 5
L = [1, 1, 1, 2] -> 5
.
.
.

我希望能够描述我的问题,我已经失望了 2 天多了。

大家好

最佳答案

对我在提议的副本中展示的想法稍作修改:

from collections import Counter

def subset_sum(vals, target):
counts = [[Counter()]] + [[] for _ in range(target)]
for val in vals:
for i in range(val, target + 1):
counts[i] += [c + Counter({val: 1}) for c in counts[i-val]]
return counts[target]

结果如下:

>>> for counts in subset_sum(vals=(1, 2), target=5):
... L = [*counts.elements()]
... print(L, "->", sum(L))
[1, 1, 1, 1, 1] -> 5
[1, 1, 1, 2] -> 5
[1, 2, 2] -> 5

关于python - 用它们的所有可能组合的 2 位数字随机填充一个列表,以便列表元素的总和给出给定的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59242166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com