【发布时间】:2012-03-29 07:44:30
【问题描述】:
我正在分析 10 种货币,我想以 10% 的增量找出这些货币的所有可能组合。例如:
10% of A, 20% of B...etc
约束如下:
总和必须达到 100% 每种货币可以有 0% 到 100% 之间的任意数量,所以 A 的 100% 的组合是有效的
目前我的代码如下所示:
for element in itertools.product(*curr_arr):
if round(sum(element),1)==1:
comb_input.append(list(element))
其中 curr_arr 本质上是一个数组,如下所示:
[0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0]
这种方法非常慢,因为它会查看所有组合,然后提取总和为 1 的组合。有没有更有效的方法来执行此操作并加快我的代码速度?
【问题讨论】:
-
如果可能,使用百分比 (10, 20, 30, ...) 而不是浮点数 (0.1, 0.2, 0.3, ...)。这些浮点数的总和并不是 1.0。:
0.3+0.3+0.3+0.1返回0.99999999999999989
标签: python loops combinations