En este tutorial, aprenderá cómo eliminar elementos duplicados de las listas de Python.
Cuando trabaja con listas en Python, es posible que a veces necesite trabajar solo con elementos únicos en la lista, eliminando los duplicados.
Hay algunas maneras diferentes de hacer esto. En este tutorial, repasaremos cinco de estas técnicas.
Conceptos básicos de las listas de Python
Comencemos nuestra discusión repasando los conceptos básicos de Listas de Python.
Las listas de Python son mudable. Para que pueda modificarlos en su lugar agregando y eliminando elementos de la lista. Además, las listas de Python son colecciones de elementos que no son necesariamente únicos.
Entonces, ¿cómo se conserva sólo el elementos únicos y remove al duplicar o elementos repetitivos?
Bueno, puedes hacer esto de diferentes maneras. Puede crear una nueva lista que contenga solo los elementos únicos de la lista original. O puede optar por modificar la lista original en su lugar y eliminar los elementos duplicados.
Los aprenderemos en detalle en este tutorial.
Métodos para eliminar duplicados de las listas de Python
Tomemos un ejemplo del mundo real. Supongamos que estás en la fiesta de cumpleaños de tu amigo.🎊🎉
En la colección de dulces que se muestra, se ve que hay algunos artículos que se repiten. Ahora le gustaría eliminar esos elementos duplicados de la lista de dulces.

Vamos a crear un sweets
lista que contiene todos los elementos de la imagen de arriba.
sweets = ["cupcake","candy","lollipop","cake","lollipop","cheesecake","candy","cupcake"]
En lo anterior sweets
lista, los artículos 'caramelo' y 'magdalena' se repiten dos veces. Usemos esta lista de ejemplo para eliminar los elementos duplicados.
Iterate over Python Lists to Remove Duplicates
El método más sencillo es crear una nueva lista que contenga cada elemento exactamente una vez.
Lea la celda de código a continuación:
unique_sweets = []
for sweet in sweets:
if sweet not in unique_sweets:
unique_sweets.append(sweet)
print(unique_sweets)
# Output
['cupcake', 'candy', 'lollipop', 'cake', 'cheesecake']
- Inicializamos una lista vacía
unique_sweets
. - Mientras recorre el
sweets list
, accedemos a cadasweet
. - If
sweet
no está ya presente en elunique_sweets
lista, lo agregamos al final deunique_sweets
lista usando el.append()
método.
Suponga que se encuentra con un elemento repetitivo, por ejemplo, la segunda aparición de 'caramelo' en el sweets
lista. Esto no se agrega a la unique_sweets
lista como ya está presente: sweet not in unique_sweets
evalúa a False
para la segunda ocurrencia de 'cupcake' y 'candy'.
Por lo tanto, en este método, cada elemento aparece exactamente una vez en el unique_sweets
lista—sin ninguna repetición.
Use List Comprehension to Remove Duplicates
También puede utilizar la comprensión de listas para completar el unique_sweets
lista.
¿Quiere refrescar los conceptos básicos de la comprensión de listas?
▶️ Consulta el tutorial sobre lista de comprensión en Python.
Usemos la expresión de comprensión de lista: [salida para el elemento en iterable si la condición es verdadera] para reescribir el bucle anterior de forma concisa.
unique_sweets = []
[unique_sweets.append(sweet) for sweet in sweets if sweet not in unique_sweets]
print(unique_sweets)
# Output
['cupcake', 'candy', 'lollipop', 'cake', 'cheesecake']
Aunque esté creando una nueva lista, no está completando la lista creada con valores. Esto se debe a que la salida es el .append()
operación a la unique_sweets
lista.
Para eliminar elementos duplicados de las listas de Python, también puede usar métodos de lista incorporados, y lo cubriremos en la siguiente sección.
Use Built-in List Methods to Remove Duplicates
Puede utilizar el Lista de Python métodos .count()
y .remove()
para eliminar elementos duplicados.
– Con la sintaxis list.count(valor), la
.count()
método devuelve el número de vecesvalue
ocurre enlist
. Entonces, el conteo correspondiente a los elementos repetidos será mayor que 1.– list.remove(valor) elimina la primera aparición de valor de la lista.
Usando lo anterior, tenemos el siguiente código.
for sweet in sweets:
# check if the count of sweet is > 1 (repeating item)
if sweets.count(sweet) > 1:
# if True, remove the first occurrence of sweet
sweets.remove(sweet)
print(sweets)
# Output
['cake', 'lollipop', 'cheesecake', 'candy', 'cupcake']
Puesto que el .remove()
el método elimina , solamente la primera vez que aparece un valor, no puede usarlo para eliminar elementos que aparecen más de dos veces.
- Si un elemento en particular está duplicado (ocurre exactamente dos veces), este método elimina la primera aparición.
- Si un elemento en particular se repite
K
veces, luego de ejecutar el código anterior,K-1
las repeticiones aún permanecerán.
Pero en general, cuando decimos duplicados, solemos referirnos a todos repeticiones
Para manejar este caso, puede modificar el ciclo anterior para eliminar todas las repeticiones excepto una. En lugar de usar un if
condicional para verificar el conteo de un elemento en particular, puede ejecutar un while
bucle para eliminar repetidamente las duplicaciones hasta que el recuento de cada elemento de la lista sea 1.
La lista sweets
ahora contiene 2 repeticiones de 'cupcake' y 3 repeticiones de 'candy'.
sweets = ["cupcake","candy","lollipop","cake","lollipop","candy","cheesecake","candy","cupcake"]
Puedes utilizar una while
bucle para eliminar las repeticiones, como se muestra a continuación. El ciclo while continúa ejecutándose siempre que el conteo de dulce en dulces sea mayor que 1. Cuando solo queda una ocurrencia, la condición dulces.recuento(dulce) > 1 se vuelve falsa y el ciclo salta al siguiente elemento.
for sweet in sweets:
# check if the count of sweet is > 1 (repeating item)
while(sweets.count(sweet) > 1):
# repeatedly remove the first occurrence of sweet until one occurrence remains.
sweets.remove(sweet)
print(sweets)
# Output
['cake', 'lollipop', 'cheesecake', 'candy', 'cupcake']
Pero el uso de bucles anidados puede no ser muy eficiente, por lo que podría considerar usar una de las otras técnicas discutidas si está trabajando con listas grandes.
Hasta ahora, hemos aprendido lo siguiente:
- Métodos para eliminar elementos duplicados de las listas de Python (mediante la creación de nuevas listas) que contengan solo elementos únicos
- Métodos de lista incorporados
.count()
y.remove()
para modificar la lista en su lugar
Hay algunas estructuras de datos integradas de Python que requieren que los valores sean todos únicos, sin repetición. Por lo tanto, podemos convertir una lista de Python en una de estas estructuras de datos para eliminar los duplicados. Y luego convertirlos de nuevo en una lista. Aprenderemos cómo hacer esto en las próximas secciones.
Cast Python List into a Set to Remove Duplicates
Los conjuntos de Python son colecciones de elementos que son todo único. Por lo tanto, el número de elementos presentes en el conjunto (dado por len(<set-obj>
) es igual al número de elementos únicos presentes.
Puede convertir cualquier Python iterable en un conjunto usando la sintaxis:
set(iterable)
.
Ahora, integremos la lista de dulces en un conjunto y examinemos el resultado.
set(sweets)
# Output
{'cake', 'candy', 'cheesecake', 'cupcake', 'lollipop'}
En el resultado de la celda de código anterior, vemos que cada elemento aparece exactamente una vez y que se han eliminado los duplicados.
Además, tenga en cuenta que el orden de los artículos no es necesariamente el mismo que en la lista original de dulces. Esto se debe a que, además de ser una colección de elementos únicos, un objeto de conjunto de Python es un colección desordenada.
Ahora que hemos eliminado los duplicados al convertir la lista en un conjunto, podemos volver a convertirla en una lista, como se muestra a continuación.
unique_sweets = list(set(sweets))
print(unique_sweets)
# Output
['cake', 'cheesecake', 'candy', 'cupcake', 'lollipop']
Use List Items as Dictionary Keys to Remove Duplicates
Diccionario de Python es una colección de pares clave-valor donde las claves identifican de forma única los valores.
Puede crear un diccionario de Python usando el .fromkeys()
método con la sintaxis: dict.fromkeys(keys, values)
. Aquí, keys
y values
son iterables que contienen las claves y valores del diccionario, respectivamente.
keys
es un Requisitos parámetro, y puede ser cualquier Python iterable correspondiente a las claves del diccionario.values
es un opcional parámetro. Si no especifica los valores iterables, el valor predeterminado deNone
se utiliza.
Sin especificar los valores, dict.fromkeys(sweets)
devuelve un diccionario de Python donde los valores se establecen en None
– el valor predeterminado. La siguiente celda de código explica esto.
dict.fromkeys(sweets)
# Output
{'cake': None,
'candy': None,
'cheesecake': None,
'cupcake': None,
'lollipop': None}
Al igual que en la sección anterior, podemos volver a convertir el diccionario en una lista, como se muestra a continuación.
unique_sweets = list(dict.fromkeys(sweets))
print(unique_sweets)
# Output
['cupcake', 'candy', 'lollipop', 'cake', 'cheesecake']
Del resultado anterior, podemos ver que los elementos duplicados se han eliminado de la lista sweets
.
Resumiendo👩🏫
Aquí hay un resumen de los diferentes métodos que puede usar para eliminar elementos duplicados o repeticiones de las listas de Python.
- Use el Método de lista de Python .adjuntar() para agregar elementos que no se repiten a una nueva lista. La nueva lista contiene cada elemento de la lista original exactamente una vez y elimina todas las repeticiones. También puede hacer esto usando la comprensión de listas.
- Utilice incorporado .contar() y .retirar() métodos para eliminar elementos que ocurren exactamente dos veces. El mismo se puede colocar en un mientras bucle para eliminar todas las ocurrencias adicionales.
- Convierta una lista de Python en un conjunto para retener solo los elementos únicos.
- Utilice la herramienta dict.fromkeys(lista) para eliminar cualquier duplicado de la lista ya que no debería haber claves de repetición del diccionario.
A continuación, echa un vistazo Proyecto Pythonts para practicar y aprender. O aprender a encontrar el índice de un elemento en las listas de Python. ¡Feliz aprendizaje!