计算包含某些项目的列表集的总唯一排列的算法

查尼

考虑这样的配置文件:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章