Me suena a chino todas estas funciones :S Ya le echaré un ojo con paciencia, y miraré de resolver el pendiente ;)
Un saludo :) 2010/8/30 Arnau Sanchez <pyar...@gmail.com> > On Mon, 30 Aug 2010 19:39:11 +0200 Ramon Villalonga Gómez wrote: > > > No sabía que se puede hacer a través de la funcion int() y no tengo > > ni idea de como hacer el código en una línea. > > Una versión simple teniendo en cuenta que las potencias de 2 son > desplazamientos (shift) hacia la izquierda: > > def strbin2int(s): > return sum(int(x)*(1 << pos) for (pos, x) in enumerate(reversed(s))) > > Pero no hace falta calcular el sumando cuando el dígito es 0, así que > llevamos > el int() al iterable y queda algo más eficiente: > > def strbin2int(s): > return sum(1 << pos for (pos, x) in enumerate(map(int, reversed(s))) if > x) > > Y con la misma idea, generalizando para base <= 10: > > def str2int(s, base=10): > return sum(x*(base**pos) for (pos, x) in > enumerate(map(int, reversed(s))) if x) > > El int2str() de 3 líneas (¿o menos?) queda como ejercicio para el lector > ;-) > > arnau > _______________________________________________ > Python-es mailing list > Python-es@python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ >
_______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/