2012-04-26 17 views
5

Estoy tratando de encontrar el producto cartesiano de dos conjuntos diferentes. No encuentro nada en la web sobre productos cartesianos de conjuntos, ya sea de lista o de diccionarios.Conjunto de potencia y producto cartesiano de un conjunto de pitón

También el conjunto de potencia es muy confuso.

Ninguno de estos está en mi libro que he estado usando.

Podría uno de todos ellos señalarme la dirección correcta.

Respuesta

12

Para el producto cartesiano, consulte itertools.product.

Para el powerset, the itertools docs también nos dará una receta:

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)) 

Por ejemplo:

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

gracias por la edición que hizo mucho más clara que estoy tratando de poner en práctica estos en mi código actualmente ¿necesito importar itertools? ¡Gracias de nuevo! – bradb

+0

Sí, necesita importar las funciones que usa de '' itertools'', como con cualquier función que use de otro módulo. –

+0

powerset podría definirse mejor con 's = set (iterable)'. – Darthfett

Cuestiones relacionadas