permutacion del bit
heimy
ricardo.cardenes en gmail.com
Lun Mar 23 15:28:20 CET 2009
Oops... Mandé una versión corregida de uno que lanzaba una excepción
cuando n < 1. Devolviendo cadena vacía en ese caso quedaría más
compacto:
def combinaciones(elementos, n):
if n < 1:
yield ''
else:
for e in elementos:
for comb in combinaciones(elementos, n - 1):
yield e + comb
o, para cualquier secuencia...
def combinaciones(elementos, n):
t = type(elementos)
if n < 1:
yield t()
else:
for e in elementos:
for comb in combinaciones(elementos, n - 1):
yield t(e) + comb
2009/3/23 heimy <ricardo.cardenes en gmail.com>:
> Si quiere algo más genérico, al estilo del primer ejemplo:
>
> def combinaciones(elementos, n):
> if n < 1:
> yield ''
> elif n == 1:
> for e in elementos:
> yield e
> else:
> for e in elementos:
> for comb in combinaciones(elementos, n - 1):
> yield e + comb
>
>>>> [x for x in combinaciones('01', 1)]
> ['0', '1']
>>>> [x for x in combinaciones('01', 2)]
> ['00', '01', '10', '11']
>>>> [x for x in combinaciones('01', 3)]
> ['000', '001', '010', '011', '100', '101', '110', '111']
>
_______________________________________________
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