考虑这样的配置文件:
A = <some value>
B = <some value>
C = <some value>
其中每个选项A / B / C可以占用属于列表L的任何值X。此列表L的大小是固定的,并且事先已知。请注意,配置文件中可以有任意数量的条目-即,可以有D,E,F ..等等。
因此,举例来说,
A = <any value from list {1,2,3,4}>
B = <any value from list {5, 10, 15}>
C = <any value from list {10,20,30,40,50}>
有什么算法可以生成配置文件的每个排列(不重复)?
这意味着创建所有可能的配置文件,例如-
A=1
B=5
C=10
A=1
B=5
C=20
A=1
B=5
C=30
.
.
.
And so on
我知道这可能不完全符合一个“编程问题”,而不是一个“算法问题”,但是我已经看到了来自Euler项目的问题,并且在这里也被问到了(并且很好理解)。我仍然很抱歉,如果这不是主题或其他事情。
这应该工作。您应该阅读标准的libitertools
模块:https : //docs.python.org/2/library/itertools.html#itertools.product
import itertools
l1 = [1,2,3,4]
l2 = [5,10,15]
l3 = [10, 20, 30, 40, 50]
for a, b, c in itertools.product(l1, l2, l3):
print a,b,c
作为方法签名itertools.product
是:(*iterables[,repeat])
您只需执行以下操作即可轻松处理可变数量的列表:
lists = get_my_lists() # whatever
itertools.product(*lists)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句