我有一个像这样的python列表。
[100, 150, 30, 50, 10, 20, 40]
然后我想在上面的列表中找到90(当然不是在那里),但我的预期结果是:
[50, 40]
或
[50, 30, 10]
我如何在python或其他编程语言中实现它?
答案 0 :(得分:3)
您可以使用列表推导来迭代与您的目标值相加的列表元素的所有组合
>>> from itertools import combinations
>>> data = [100, 150, 30, 50, 10, 20, 40]
>>> target = 90
>>> [comb for n in range(1, len(data)+1) for comb in combinations(data, n) if sum(comb) == target]
[(50, 40), (30, 50, 10), (30, 20, 40)]
答案 1 :(得分:0)
为此,您需要检查每个数字组合。例如:
取100并检查它是否小于90,如果是,则检查每个小于90的其他数字并查看它们是否加到90,但是,如果两个数字加到90以下,请检查其他数字看看是否再次添加到90.
答案 2 :(得分:0)
尝试使用list-comprehension和public Knoten(KnotenType type) {
...
}
:
set