Eliminar elementos duplicados de una lista, un proceso llamado desduplicación, es una tarea común en Python. El mejor enfoque depende de si necesita preservar el orden original de los elementos. Este artículo explora dos métodos eficientes: uno que prioriza la velocidad y el otro que preserva el orden.
Tabla de Contenido
Desduplicar una Lista (Sin Orden)
Para situaciones donde el orden de los elementos no es crítico, aprovechar el tipo set
integrado de Python ofrece la solución más rápida. Los conjuntos almacenan intrínsecamente solo elementos únicos. Convertir una lista en un conjunto y luego volver a una lista elimina eficazmente los duplicados.
my_list = [1, 2, 2, 3, 4, 4, 5, 1]
unique_list = list(set(my_list))
print(unique_list) # Salida: [1, 2, 3, 4, 5] (el orden puede variar)
La concisión y eficiencia de este método se derivan de la naturaleza optimizada de las operaciones de conjuntos. Sin embargo, tenga en cuenta que el orden de la lista de salida puede diferir del original.
Desduplicar una Lista (Con Orden)
Mantener el orden original requiere un enfoque ligeramente más complejo. Iteraremos a través de la lista, rastreando los elementos vistos usando un conjunto. Solo los elementos que aún no se han encontrado se agregan a una nueva lista.
my_list = [1, 2, 2, 3, 4, 4, 5, 1]
seen = set()
unique_list = []
for item in my_list:
if item not in seen:
unique_list.append(item)
seen.add(item)
print(unique_list) # Salida: [1, 2, 3, 4, 5] (orden original preservado)
Este método itera una vez, utilizando el conjunto seen
para búsquedas eficientes de casos promedio O(1), asegurando un buen rendimiento incluso para listas grandes. La ventaja clave es la preservación del orden original.
Elegir el Método Adecuado:
Priorice el segundo método (ordenado) cuando sea crucial preservar el orden original. Si el orden no es importante, el primer método (sin ordenar) proporciona una velocidad y simplicidad superiores. Para listas extremadamente grandes donde el rendimiento es primordial y el orden no es importante, el enfoque basado en conjuntos es el claro ganador.