我正在试图找出一种计算某种产品功能的所有可能组合的方法,并将它们作为列表返回,而不会重复。
我有以这种方式分组的项目(产品的特征):
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_c3
和a1_c3_b2
是重复的,我不希望在返回的列表中有任何重复。
没有所有功能的产品(例如a1_b2
或b2
)将不是有效产品,因此我也不希望返回列表中的产品。
我调查过itertools但是我被卡住了。 有什么想法吗?
答案 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