1

我试图找出一种方法来计算某个产品的所有可能的功能组合,并将它们作为列表返回,没有重复。

我有以这种方式分组的项目(产品的功能):

a
   a1
   a2
   a3

b
   b1
   b2

c
   c1
   c2
   c3
   c4

组和项目的数量是未知的,所以实际上有 N 个组和 N 个项目。

示例组合:

# Combinations with 3 groups
a1_b1_c1
a1_b2_c1
a1_b3_c1
...and so on

# Combinations with 4 groups
a1_b1_c1_d1
a1_b2_c1_d1
a1_b3_c1_d1
...and so on

我会考虑a1_b2_c3a1_c3_b2成为重复项,并且我不希望返回列表中有任何重复项。

没有所有功能的产品,例如a1_b2b2不会是有效产品,因此我也不希望返回列表中的产品。

我已经研究过 itertools 但我被卡住了。有任何想法吗?

4

1 回答 1

3

你肯定想要 itertools.product:

import itertools

for i in itertools.product(['a1','a2','a3'], ['b1','b2'],['c1','c2','c3','c4']):
    print '_'.join(i)

回报

a1_b1_c1
a1_b1_c2
a1_b1_c3
...
a3_b2_c1
a3_b2_c2
a3_b2_c3
a3_b2_c4
于 2013-09-25T17:23:14.403 回答