Geekflare cuenta con el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliados comprando enlaces en este sitio.
Comparte en:

5 métodos para eliminar elementos duplicados de las listas de Python

python elimina duplicados de la lista
Escáner de seguridad de aplicaciones web Invicti – la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

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.

eliminar-duplicado-de-la-lista

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 cada sweet.
  • If sweet no está ya presente en el unique_sweets lista, lo agregamos al final de unique_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 veces value ocurre en list. 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 de None 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!

Gracias a nuestros patrocinadores
Más lecturas interesantes sobre el desarrollo
Impulse su negocio
Algunas de las herramientas y servicios para ayudar a que su negocio crezca.
  • Invicti utiliza Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en cuestión de horas.
    Prueba Invicti
  • Web scraping, proxy residencial, administrador de proxy, desbloqueador web, rastreador de motores de búsqueda y todo lo que necesita para recopilar datos web.
    Prueba Brightdata
  • Semrush es una solución de marketing digital todo en uno con más de 50 herramientas en SEO, redes sociales y marketing de contenido.
    Prueba Semrush
  • Intruder es un escáner de vulnerabilidades en línea que encuentra debilidades de ciberseguridad en su infraestructura, para evitar costosas filtraciones de datos.
    Intente Intruder