Python eliminar elementos duplicados de una lista
En este capítulo aprenderemos cómo eliminar elementos duplicados de una lista.
Los puntos de conocimiento son:
-
Conjuntos en Python: un conjunto (set) es una secuencia desordenada de elementos únicos.
-
Listas en Python: una lista es una secuencia finita de elementos de datos, es decir, una colección de elementos de datos ordenados en un cierto orden lineal. Las operaciones básicas realizadas sobre esta estructura de datos incluyen búsqueda, inserción y eliminación de elementos.
Ejemplo
print(list(set(list_1)))
Al ejecutar el código anterior, el resultado es:
[1, 2, 4, 6]
En el ejemplo anterior, primero convertimos la lista en un conjunto y luego la volvemos a convertir en una lista. Un conjunto no puede tener elementos duplicados, por lo que set() elimina los elementos duplicados.
Si necesita mantener el orden de los elementos en la lista original, puede usar un conjunto auxiliar para realizar un seguimiento de los elementos ya vistos y luego construir una nueva lista.
Ejemplo
def remove_duplicates(lst):
seen = set()
unique_list = []
for item in lst:
if item not in seen:
seen.add(item)
unique_list.append(item)
return unique_list
# Ejemplo
original_list = [1, 2, 2, 3, 4, 4, 5]
unique_list = remove_duplicates(original_list)
print(unique_list) # Salida: [1, 2, 3, 4, 5]
Usar dict.fromkeys()
El método dict.fromkeys() también se puede usar para eliminar duplicados y mantener el orden, porque los diccionarios mantienen el orden de inserción en Python 3.7 y versiones posteriores.
Ejemplo
def remove_duplicates(lst):
return list(dict.fromkeys(lst))
# Ejemplo
original_list = [1, 2, 2, 3, 4, 4, 5]
unique_list = remove_duplicates(original_list)
print(unique_list) # Salida: [1, 2, 3, 4, 5]
Al ejecutar el código anterior, el resultado es:
[1, 2, 3, 4, 5]
Usar comprensión de listas
La comprensión de listas combinada con condiciones también puede lograr la eliminación de duplicados.
Ejemplo
def remove_duplicates(lst):
unique_list = []
[unique_list.append(item) for item in lst if item not in unique_list]
return unique_list
# Ejemplo
original_list = [1, 2, 2, 3, 4, 4, 5]
unique_list = remove_duplicates(original_list)
print(unique_list) # Salida: [1, 2, 3, 4, 5]
Eliminar elementos duplicados en dos listas
En el siguiente ejemplo, se eliminan los elementos que existen en ambas listas.
Ejemplo
list_2 = [7, 8, 2, 1]
print(list(set(list_1) ^ set(list_2)))
Primero, use set() para convertir las dos listas en dos conjuntos, con el fin de eliminar los elementos duplicados en las listas.
Luego, use^el operador para obtener la diferencia simétrica de las dos listas.
Al ejecutar el código anterior, el resultado es:
[4, 6, 7, 8]
Primero, convierta las dos listas en dos conjuntos para eliminar los duplicados de cada lista.
Luego,^se obtiene la diferencia simétrica de las dos listas (excluyendo los elementos superpuestos de los dos conjuntos).
Otras extensiones
Ejemplos de Python3