Aceleracion de una funcion

Israel Gutierrez amphora en escomposlinux.org
Mie Nov 30 22:02:44 CET 2005


El Miércoles, 30 de Noviembre de 2005 16:57, Pepe Aracil escribió:
> Puedes utilizar como ya te han comentado el replace o el translate.
> Pero para tu información, decir que la concatenación de cadenas en python
> es lentisima. Prueba esta forma alternativa de concatenar:
>
> lst_result=[]
> for caracter in cadena:
>      if ord(caracter) not in a:
>      lst_resultado.append(caracter)
> resultado = "".join(lst_resultado)
> return resultado

Sabía que la concatenación es lenta, pero no se me ocurria ninguna otra forma 
para hacerlo rápido. Gracias por las respuestas, entre usar una tupla, los 
join y el replace tarda entre 1 y 2 segundos para ficheros de 1 mega.

Al final he dejado algo parecido a esto:
#-*_ coding: ISO-8859-15 -*-

import sys,time

def solo_texto(cadena):
#a es código ascii  que no interesa (lo que no está 
incluidoenstring.printable)
  
a=(0,1,2,3,4,5,6,7,8,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160)
  for caracter in a:
    resultado=cadena.replace(chr(caracter),'')
  return resultado

if __name__=='__main__':
  cadena=''.join(file(sys.argv[1]).readlines())
  texto=solo_texto(cadena)
  print time.clock()
--
BOFH excuse #101:

Collapsed Backbone
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: no disponible
Type: application/pgp-signature
Size: 189 bytes
Desc: no disponible
URL: <http://mail.python.org/pipermail/python-es/attachments/20051130/b0772901/attachment.pgp>
------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es


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