如何迭代一系列排列?

时间:2016-09-08 21:30:00

标签: python

假设你有3 stocks A, B and C 个项目,每个项目的范围是1-100。如何才能了解范围内的所有可能变化?

示例:

A - 0     0   0            1    2          1    1
B - 0     1   2      ...   0    0    ...   1    2
C - 100   99  98           99   98         98   97

努力寻找可能的投资组合分配。

n

寻找高效方式来获取所有可能结果的矩阵。

Sum应该加起来为100,并涵盖OpenGLWidget元素的所有可能变体。

1 个答案:

答案 0 :(得分:2)

我是怎么做到的:

>>> import itertools
>>> cp = itertools.product(range(101),repeat=3)
>>> portfolios = list(p for p in cp if sum(p)==100)

但这会产生不必要的组合。请参阅有关整数分区的讨论以避免这种情况。例如,Elegant Python code for Integer Partitioning