Re: Variaciones sin repetición entre varios datos dado

Chema Cortes pych3m4 en gmail.com
Lun Jul 28 10:59:18 CEST 2008


El 2008/7/26 Josu Rodriguez <jrvilda en gmail.com> escribió:

> Estoy intentando realizar un código que calcule las variaciones sin
> repetición entre unos datos dados:
> he conseguido hacer el siguiente código pero no es lo que quiero ya que este
> solo muestra las variaciones de uno y de dos y tres componentes, y me
> gustaria que fuese variable puediendo calcular incluso de 9 elementos.
> ¿como se haría para que los bucles serian variables dependiendo de la
> cantidad dada?

Una solución adaptada de otra que puse por aquí hace un tiempo:

def combinaciones(l, nc):

  def indexes(nelements,nc):  # nc>=2
      s=range(nelements)
      res=[(i,j) for i in s for j in s]
      for n in range(nc-2):
          res=[(i,)+t for i in s for t in res]
      return (t for t in res if len(set(t))==nc)

  return ( [l[i] for i in t] for t in indexes(len(l),nc) )

elementos=('a', 'b', 'c', 'd')
print list(combinaciones(elementos,3))



La función "indexes" devuelve el orden de los índices con los que
seleccionar luego los elementos de la lista. "nc" es el número de
elementos a tomar. El len(set(t))==nc nos asegura que no habrá
repetición.
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





Más información sobre la lista de distribución Python-es