2012-04-26 54 views
5

Próbuję znaleźć produkt kartezjański dwóch różnych zestawów. Nie mogę znaleźć niczego w Internecie na temat kartezjańskich produktów z zestawów, które są albo z listy, albo ze słowników.Zestaw zasilania i kartezjański produkt zestawu python

Także zestaw zasilania jest bardzo mylący.

Żadna z nich nie jest w mojej książce, której używałem.

Czy ktoś z was może wskazać mi właściwy kierunek.

Odpowiedz

12

Dla produktu kartezjańskiego, sprawdź itertools.product.

Dla PowerSet, the itertools docs również daje nam przepis:

def powerset(iterable): 
    "powerset([1,2,3]) -->() (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)" 
    s = list(iterable) 
    return chain.from_iterable(combinations(s, r) for r in range(len(s)+1)) 

na przykład:

>>> test = {1, 2, 3} 
>>> list(powerset(test)) 
[(), (1,), (2,), (3,), (1, 2), (1, 3), (2, 3), (1, 2, 3)] 
>>> list(product(test, test)) 
[(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)] 
+0

Dziękuję za edycji to sprawiło, że o wiele bardziej jasne Próbuję zaimplementować je w mój kod jest obecnie potrzebny do zaimportowania itertools? Dzięki jeszcze raz! – bradb

+0

Tak, musisz importować używane funkcje z '' itertools'', tak jak w przypadku wszystkich funkcji używanych z innego modułu. –

+0

powerset może być lepiej zdefiniowany za pomocą 's = set (iterable)'. – Darthfett

Powiązane problemy