Cómo Eliminar Elementos Duplicados de una Lista en Python: 8 Métodos Efectivos
Una lista es una estructura de datos fundamental en Python que contiene una colección ordenada de items como enteros, strings u objetos personalizados. Es el equivalente en Python de un array en otros lenguajes.
A continuación, técnicas probadas para eliminar elementos duplicados de una lista preservando orden y legibilidad.
- Eliminar duplicados usando un set
- Eliminar duplicados con lista temporal
- Eliminar duplicados usando OrderedDict (o dict.fromkeys)
- Eliminar duplicados con bucle for simple
- Eliminar duplicados vía list comprehension
- Eliminar duplicados con unique() de NumPy
- Eliminar duplicados con unique() de Pandas
- Eliminar duplicados con enumerate() y list comprehension
Eliminar duplicados usando un set
La función integrada set() de Python elimina duplicados devolviendo solo elementos únicos. Convierte la lista a set, luego de vuelta a lista para preservar el formato de colección.
mi_lista = [1,1,2,3,2,2,4,5,6,2,1] mi_lista_final = set(mi_lista) print(list(mi_lista_final))
Salida:
[1, 2, 3, 4, 5, 6]
Eliminar duplicados usando lista temporal
Este enfoque crea una lista vacía, itera sobre la original y añade solo items que no se han visto antes.
mi_lista = [1, 2, 3, 1, 2, 4, 5, 4, 6, 2]
print("Lista Antes ", mi_lista)
temp_lista = []
for i in mi_lista:
if i not in temp_lista:
temp_lista.append(i)
mi_lista = temp_lista
print("Lista Después de eliminar duplicados ", mi_lista)
Salida:
Lista Antes [1, 2, 3, 1, 2, 4, 5, 4, 6, 2] Lista Después de eliminar duplicados [1, 2, 3, 4, 5, 6]
Eliminar duplicados usando OrderedDict (o dict.fromkeys)
Para Python 3.5+, un dict plano preserva orden de inserción, así que dict.fromkeys() puede usarse para mantener valores únicos en orden.
mi_lista = ['a','x','a','y','a','b','b','c'] mi_lista_final = dict.fromkeys(mi_lista) print(list(mi_lista_final))
Salida:
['a', 'x', 'y', 'b', 'c']
Eliminar duplicados con bucle for simple
Recorre la lista, añadiendo items a una nueva lista solo si no han aparecido antes.
mi_lista = [1,2,2,3,1,4,5,1,2,6]
mi_lista_final = []
for i in mi_lista:
if i not in mi_lista_final:
mi_lista_final.append(i)
print(mi_lista_final)
Salida:
[1, 2, 3, 4, 5, 6]
Eliminar duplicados vía list comprehension
Las list comprehensions ofrecen sintaxis concisa manteniendo legibilidad.
mi_lista = [1,2,2,3,1,4,5,1,2,6] mi_lista_final = [] [mi_lista_final.append(n) for n in mi_lista if n not in mi_lista_final] print(mi_lista_final)
Salida:
[1, 2, 3, 4, 5, 6]
Eliminar duplicados con unique() de NumPy
La función unique() de NumPy devuelve los elementos únicos ordenados de un array.
import numpy as np mi_lista = [1,2,2,3,1,4,5,1,2,6] mi_lista_final = np.unique(mi_lista).tolist() print(mi_lista_final)
Salida:
[1, 2, 3, 4, 5, 6]
Eliminar duplicados usando unique() de Pandas
Similarmente, Pandas ofrece un método ligero unique() que funciona en objetos tipo lista.
import pandas as pd mi_lista = [1,2,2,3,1,4,5,1,2,6] mi_lista_final = pd.unique(mi_lista).tolist() print(mi_lista_final)
Salida:
[1, 2, 3, 4, 5, 6]
Eliminar duplicados con enumerate() y list comprehension
Combinar enumerate() con list comprehension permite eliminar duplicados preservando la primera ocurrencia de cada elemento.
mi_lista = [1,2,2,3,1,4,5,1,2,6] mi_lista_final = [i for j, i in enumerate(mi_lista) if i not in mi_lista[:j]] print(mi_lista_final)
Salida:
[1, 2, 3, 4, 5, 6]
Resumen
- Usar
set()es la forma más rápida de eliminar duplicados, aunque no preserva orden. - Listas temporales o bucles for mantienen el orden original pero son ligeramente menos concisos.
- Diccionarios ordenados o
dict.fromkeys()preservan orden y son muy eficientes. - NumPy y Pandas proveen soluciones one-liner para workflows numéricos o pesados en DataFrames.
- List comprehensions con
enumerate()ofrecen estilo funcional legible y que preserva orden.
python
- Dominando tipos de datos en Python: Guía práctica
- Dominando operadores en Python: Guía completa
- Dominando la sentencia pass en Python: Guía práctica
- Dominando argumentos de funciones en Python: Posicionales, por palabra clave y por defecto
- Dominando la función range() de Python: desde lo básico a casos avanzados
- Dominando Listas en Python: Append, Sort, Length y List Comprehensions (Guía Práctica)
- Calculando Promedios en Python: Guía Práctica con Múltiples Métodos
- Python list.count(): Guía Experta con Ejemplos Prácticos
- Cómo Eliminar Ítems de una Lista en Python: remove(), pop(), clear() y del
- Python list.index(): Cómo Encontrar Posiciones de Elementos con Ejemplos Prácticos
- Dominando listas en Python: Guía completa