Re: ¿Forma óptima de eliminar duplicados?

Chema Cortes pych3m4 en gmail.com
Mar Jul 29 14:32:46 CEST 2008


El día 29 de julio de 2008 11:52, Beni <camontuyu en yahoo.es> escribió:
> Hola.
>
> En ciertas partes de mi código suelo hacer:
>
> list(set(una_lista))
>
> Para eliminar duplicados en la lista.
>
> ¿es la mejor forma de eliminar los elementos repetidos de una lista?
> ¿es está una forma óptima que emplee mucho tiempo?

Yo no me preocuparía con la "optimización" si está funcionando como
esperas. Python está preparado para ser eficiente en la creación de
objetos básicos como son listas y conjuntos. Lo único a tener en
cuenta es que con los conjuntos pierdes el orden de la secuencia.

Si quieres mantener el orden hay un truco (aunque no recomiendo utilizarlo):

  [i for i in lista if i not in locals()["_[1]"]]

Es mejor emplear otras cosas como

def nodup(s,i):
  return s if i in s else s+[i]

reduce(nodup, lista, [] )

Lástima que "reduce" vaya a desaparecer de python 3000.
_______________________________________________
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