[pyar] productos elementos de una lista

"Matías A. Bellone" matiasbellone en gmail.com
Mar Mayo 10 14:11:51 ART 2011


On 05/10/2011 01:28 PM, Nehuen Diez wrote:
> Buenas.
>
>
> Mi problema es el siguiente:
>
> Tengo una lista con numeros, y quiero extraer de esa lista todos los
> productos posibles entre ellos, sin repetir y sin soplar (y ademas
> obtener los numeros mismos) :P
>
> por ejemplo: l1 = [2, 3, 3]
>
> quiero obtener: l2= [2, 3, 6, 9, 18]
>

Probablemente haya una forma más fácil o más corta o más pythónica de 
hacer esto (los dos loops anidados estoy casi seguro que se pueden 
evitar) pero esta es la solución a la que llegué.

# itertools es una masa
from itertools import combinations
from operator import mul

def productos(lista):
      ret = set() # el set remueve duplicados automáticamente
      for x in xrange(len(lista)):
          for comb in combinations(lista, x + 1): # de 1 a len
              ret.add(reduce(mul, comb))
      return sorted(list(ret))


Saludos,
Toote



More information about the pyar mailing list