【发布时间】:2018-04-17 16:31:35
【问题描述】:
我试图获取列表中元素的索引,它的总和等于某个数字。
a = [50, 50, 50, 50, 75, 75]
b = 125
在上面的示例中,我正在寻找列表 a 中元素的索引,其总和等于 b (=125)。我正在寻找的索引组合是 [0, 4],对应第一个数字 50 和第一个数字 75。
我找到了一种方法,首先使用 itertools.combinations 创建列表 a 中元素的可能组合,然后过滤总和等于 125 的所有组合。它导致索引 [0,4]、[1,4]、 [2,4],... 这对于包含许多元素的列表 a 来说是很成问题的。
python中有没有简单的方法?
谢谢。
【问题讨论】:
-
事后看来,这似乎是子集和问题的导数,它是 NP 完全的。没有有效的算法可以找到您要查找的内容,只需遍历所有可能的组合。
-
感谢您的回复..
标签: python list conditional-statements selection