Cómo eliminar duplicados de una lista en Python

⚡ Resumen inteligente

Eliminar duplicados de un Python La creación de listas se puede realizar mediante varios métodos integrados, como set(), dict.fromkeys(), bucles, comprensiones de listas y métodos de biblioteca de NumPy y Pandas, cada uno de los cuales equilibra la preservación del orden con la velocidad.

  • 🔘 Método de configuración: El método set() devuelve los elementos distintos al instante, pero no conserva el orden original de la lista.
  • ☑️ Orden preservado: dict.fromkeys() y OrderedDict eliminan duplicados mientras mantienenping el orden de inserción que se vio por primera vez.
  • Control manual: Un bucle for o una comprensión de lista con una comprobación de pertenencia mantiene el orden y la legibilidad.
  • 🧪 Métodos de la biblioteca: Las funciones unique() de NumPy y unique() de Pandas eliminan los datos duplicados y devuelven una lista como resultado mediante el método tolist().
  • 🛠️ Límite de hashabilidad: Las claves de conjuntos y diccionarios requieren elementos que se puedan hashear, por lo que las listas o los diccionarios necesitan un enfoque basado en bucles.
  • 🤖 Flujos de trabajo de IA: Los procesos de aprendizaje automático eliminan los datos de entrenamiento duplicados con la función drop_duplicates() de Pandas para evitar sesgos y fugas de datos.

Eliminar duplicados de una lista en Python

Python eliminar duplicados de una lista

Una lista es un contenedor que contiene diferentes Python objetos, que pueden ser números enteros, palabras, valores, etc. Es el equivalente a una matriz en otros lenguajes de programación.

Así que aquí repasaremos diferentes maneras en las que podemos eliminar duplicados de una lista dada en Python.

Método 1) Eliminar duplicados de la lista usando Set

Para eliminar los duplicados de una lista, puede utilizar la función integrada set(). La particularidad del método set() es que devuelve elementos únicos.

Tenemos la lista: [1,1,2,3,2,2,4,5,6,2,1]. La lista contiene muchos elementos duplicados que debemos eliminar para obtener solo los elementos únicos. La lista se pasa a la función integrada set(). Later La lista final se muestra utilizando la función integrada list().

El resultado que obtenemos son elementos únicos, donde se eliminan todos los elementos duplicados.

Ejemplo

my_list = [1,1,2,3,2,2,4,5,6,2,1]
my_final_list = set(my_list)
print(list(my_final_list))

Salida:

[1, 2, 3, 4, 5, 6]

Método 2) Usar la lista temporal

Para eliminar duplicados de una lista, puedes usar una lista temporal vacía. Para ello, primero tendrás que recorrer la lista con duplicados y añadir los elementos únicos a la lista temporal. Later la lista temporal se asigna a la lista principal.

Ejemplo

Aquí tienes un ejemplo práctico que utiliza una lista temporal.

my_list = [1, 2, 3, 1, 2, 4, 5, 4 ,6, 2]
print("List Before ", my_list)
temp_list = []

for i in my_list:
    if i not in temp_list:
        temp_list.append(i)

my_list = temp_list

print("List After removing duplicates ", my_list)

Salida:

List Before  [1, 2, 3, 1, 2, 4, 5, 4, 6, 2]
List After removing duplicates  [1, 2, 3, 4, 5, 6]

Método 3) Usar Dict

Podemos eliminar los duplicados de la lista importando OrderedDict de collections. Está disponible a partir de Python 2.7. OrderedDict se encarga de devolver los elementos únicos en el orden en que aparece la clave.

Vamos a usar una lista y el método fromkeys() disponible en OrderedDict para obtener los elementos únicos de la lista.

Para utilizar el método OrderedDict.fromkeys(), debe importar OrderedDict desde collections, como se muestra a continuación:

from collections import OrderedDict

Aquí tienes un ejemplo para eliminar duplicados usando el método OrderedDict.fromkeys().

Ejemplo

from collections import OrderedDict

my_list = ['a','x','a','y','a','b','b','c']

my_final_list = OrderedDict.fromkeys(my_list)

print(list(my_final_list))

Salida:

['a', 'x', 'y', 'b', 'c']

Desde Python A partir de la versión 3.5, podemos usar el método dict.fromkeys() para obtener los elementos únicos de la lista. Este método devuelve claves únicas y ayuda a eliminar los valores duplicados.

A continuación se muestra un ejemplo que ilustra el funcionamiento de dict.fromkeys() en una lista para obtener los elementos únicos:

Ejemplo

my_list = ['a','x','a','y','a','b','b','c']
my_final_list = dict.fromkeys(my_list)
print(list(my_final_list))

Salida:

['a', 'x', 'y', 'b', 'c']

Método 4) Usando el bucle for

El uso de en bucle, recorreremos la lista de elementos para eliminar duplicados.

Primero, inicializa el array vacío, es decir, `myFinallist = []`. Dentro del bucle `for`, verifica si los elementos de la lista existen en el array `myFinallist`. Si no existen, agrégalos al array `myFinallist` usando el método `append()`.

Por lo tanto, cuando se encuentre un elemento duplicado, este ya estará presente en el array myFinallist y no se insertará. Veamos ahora lo mismo en el siguiente ejemplo:

Ejemplo

my_list = [1,2,2,3,1,4,5,1,2,6]
myFinallist = []
for i in my_list:
    if i not in myFinallist:
myFinallist.append(i)
print(list(myFinallist))

Salida:

[1, 2, 3, 4, 5, 6]

Método 5) Usar la comprensión de listas

Las listas por comprensión son Python funciones que se utilizan para crear nuevas secuencias (como listas, diccionarios, etc.) utilizando secuencias que ya se han creado. Esto le ayuda a reducir los bucles más largos y hacer que su código sea más fácil de leer y mantener.

Hagamos uso de la comprensión de listas para eliminar duplicados de la lista proporcionada.

Ejemplo

my_list = [1,2,2,3,1,4,5,1,2,6]
my_finallist = []
[my_finallist.append(n) for n in my_list if n not in my_finallist]
print(my_finallist)

Salida:

[1, 2, 3, 4, 5, 6]

Método 6) Usando el método unique() de NumPy

El método unique() del módulo NumPy nos puede ayudar a eliminar duplicados de la lista dada.

Para trabajar con NumPy, primero importa el módulo numpy:

Paso 1) Importar el módulo NumPy

import numpy as np

Paso 2) Utiliza tu lista con elementos duplicados dentro del método unique(). El resultado se convierte de nuevo a una lista mediante el método tolist().

myFinalList = np.unique(my_list).tolist()

Paso 3) Finalmente, imprime la lista:

print(myFinalList)

El código final con salida es el siguiente:

import numpy as np
my_list = [1,2,2,3,1,4,5,1,2,6]
myFinalList = np.unique(my_list).tolist()
print(myFinalList)

Salida:

[1, 2, 3, 4, 5, 6]

Método 7) Usar métodos Pandas

El módulo Pandas tiene un método único() que nos dará los elementos únicos de la lista proporcionada.

Para trabajar con el módulo Pandas:

Paso 1) Importar módulo Pandas

import pandas as pd

Paso 2) Utilice su lista con duplicados dentro del método unique():

myFinalList = pd.unique(my_list).tolist()

Paso 3) Imprime la lista:

print(myFinalList)

El código final con salida es el siguiente:

import pandas as pd

my_list = [1,2,2,3,1,4,5,1,2,6]
myFinalList = pd.unique(my_list).tolist()
print(myFinalList)

Salida:

[1, 2, 3, 4, 5, 6]

Método 8) Usar enumerate() y comprensión de listas

Aquí utilizamos la combinación de comprensión de listas y enumerate() para eliminar los elementos duplicados. Enumerate devuelve un objeto con un contador para cada elemento de la lista. Por ejemplo, (0,1), (1,2), etc. Aquí, el primer valor es el índice y el segundo valor es el elemento de la lista.

Se comprueba si cada elemento existe en la lista y, en caso afirmativo, se elimina de la misma.

Ejemplo

my_list = [1,2,2,3,1,4,5,1,2,6]
my_finallist = [i for j, i in enumerate(my_list) if i not in my_list[:j]]
print(list(my_finallist))

Salida:

[1, 2, 3, 4, 5, 6]

Preguntas Frecuentes

No. Un conjunto es una colección no ordenada, por lo que `set()` puede devolver elementos en un orden diferente. Para eliminar duplicados manteniendo el orden, usa `dict.fromkeys()` o un bucle que agregue solo elementos que no se hayan visto antes.

Para listas grandes, `set()` es la opción más rápida cuando el orden no importa porque las comprobaciones de pertenencia son O(1). Cuando el orden importa, `list(dict.fromkeys(my_list))` es casi igual de rápida y mantiene el orden de aparición inicial en una sola línea.

Los métodos `set()` y `dict.fromkeys()` requieren elementos que se puedan hashear, por lo que fallan con listas o diccionarios. Recorre la lista y agrega los elementos que aún no se hayan visto, o convierte cada elemento en una tupla o cadena JSON como clave temporal.

Use list(dict.fromkeys(my_list)). Desde Python Los diccionarios 3.7 conservan el orden de inserción, por lo que las claves permanecen en el orden en que fueron vistas por primera vez. En versiones anteriores, utilice collections.OrderedDict.fromkeys() para obtener el mismo resultado.

No. Métodos como `set()`, `dict.fromkeys()`, comprensiones y `unique()` de NumPy o Pandas crean una nueva lista y dejan la original sin cambios. Si deseas sobrescribirla, reasigna el resultado a la misma variable.

Utilice numpy.unique() o pandas.unique() cuando los datos ya se encuentren en matrices o Series, o durante el análisis de datos. Tenga en cuenta que numpy.unique() también ordena los valores, mientras que pandas.unique() mantiene el orden de aparición. Llame a tolist() para obtener una lista simple.

Los procesos de aprendizaje automático eliminan las filas duplicadas antes del entrenamiento para evitar que las muestras repetidas sesguen el modelo o produzcan fugas de datos entre los conjuntos de entrenamiento y prueba. La función `drop_duplicates()` de Pandas es la herramienta común para limpiar conjuntos de datos tabulares.

Sí. GitHub Copilot y los asistentes de IA con capacidad de agente generan código set(), dict.fromkeys() o código de deduplicación de Pandas a partir de un comentario, sugieren la opción que preserva el orden y refactorizan los bucles, aunque aún así deberías verificar los casos límite, como los elementos que no se pueden hashear.

Resumir este post con: