2013-09-25 2 views
1

Я пытаюсь выяснить способ вычисления всех возможных комбинаций функций определенного продукта и вернуть их в виде списка без дубликатов.Найти все комбинации из N элементов в N группах без дубликатов элементов комбо (python)?

У меня есть элементы (особенности продукта), сгруппированных в такого рода образом:

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

[ 'itertools.product'] (http://docs.python.org/2/library/itertools.html # itertools.product)? – BrenBarn

+0

Да, вот и все! Спасибо. – fredrik

ответ

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 
+0

Отлично. Большое спасибо. – fredrik

Смежные вопросы