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