查找N组中N个项目的所有组合,而不重复项目组合(python)?

时间:2013-09-25 17:18:10

标签: python math iteration

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

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

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但是我被卡住了。 有什么想法吗?

1 个答案:

答案 0 :(得分:3)

你肯定想要itertools.product:

import itertools

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

RETURNS

a1_b1_c1
a1_b1_c2
a1_b1_c3
...
a3_b2_c1
a3_b2_c2
a3_b2_c3
a3_b2_c4