Python
Tipos de datos contenedor
list
sin duplicados

Lista Python Eliminar Duplicados: Explicaciones y Ejemplos

En este post, cubriremos seis temas relacionados con Python list remove duplicates, cada uno de los cuales se discute a continuación.

  • Definir la función para eliminar todos los duplicados de una lista
  • En una lista anidada
  • Cómo eliminar duplicados al aleatorizar una lista
  • Mantener el orden al eliminar duplicados
  • Eliminar duplicados y ordenar
  • Eliminar duplicados en dos listas

Cada tema se explica brevemente y se ilustra con un ejemplo.

1. Definir una función para eliminar todos los duplicados de una lista

Para eliminar todos los duplicados de una lista de Python, podemos utilizar la función set(). El tipo de datos por defecto de Python, set, es especial en el sentido de que no permite duplicados de los elementos que contiene.

💡

Si quieres saber más, consulta el post Lists vs Tuples vs Dictionaries vs Sets.

La función set() convierte un iterable, como una lista, en un conjunto y elimina automáticamente los duplicados. Puedes usarla para escribir una función que elimine todos los duplicados de una lista, como ésta

Veamos el código de ejemplo

def remove_duplicates(lst):
    return list(set(lst))
 
my_list = [1, 2, 3, 3, 4, 2, 1]
result = remove_duplicates(my_list)
 
print(result)
 
# Output
[1, 2, 3, 4]

El código anterior utiliza set() para eliminar los duplicados, luego los convierte de nuevo en una lista con list() y los devuelve.

Una cosa a tener en cuenta en este caso es que el orden de la lista existente no está garantizado. Dado que los conjuntos de Python son un tipo de datos desordenados, es posible que el orden original no se conserve al convertirlos de nuevo en una lista.

Si desea preservar el orden al eliminar duplicados en listas, vea Sección 4.

2. Eliminar duplicados en listas anidadas

Eliminar duplicados de una lista anidada en Python es un poco diferente. No puedes usar set() para eliminar duplicados de una lista anidada, así que necesitas usar un bucle para eliminar duplicados.

El siguiente es un ejemplo de código de una función para eliminar duplicados de una lista anidada:

def remove_duplicates_nested(lst):
    result = []
    for sublist in lst:
        if sublist not in result:
            result.append(sublist)
    return result
 
my_list = [[1, 2, 3], [3, 4, 5], [1, 2, 3], [6, 7, 8]]
result = remove_duplicates_nested(my_list)
print(result)
 
# Output
[[1, 2, 3], [3, 4, 5], [6, 7, 8]]

El código anterior crea una lista vacía result e itera sobre la lista doble lst, comprobando si cada sublista ya existe en result. Sólo si no existe en result se añadirá a result.

Esto elimina las sublistas duplicadas y finalmente devuelve un resultado único.

3. Cómo eliminar duplicados al aleatorizar una lista

Puedes extraer aleatoriamente elementos de una lista Python a la vez que eliminas duplicados siguiendo los siguientes pasos.

  1. Crea una nueva lista con los duplicados eliminados.
  2. Extraiga aleatoriamente elementos de la nueva lista.

Aquí hay un ejemplo de código para implementar esto

import random
 
def get_random_elements(lst, num_elements):
    unique_elements = list(set(lst))
    random_elements = random.sample(unique_elements, num_elements)
    return random_elements
 
my_list = [1, 2, 3, 3, 4, 2, 1]
result = get_random_elements(my_list, 3)
print(result)
 
# Output
[1, 4, 2]

El código anterior utiliza set() para eliminar duplicados, luego se convierte a list() para crear una nueva lista, unique_elements.

A continuación, utilizamos la función random.sample() para generar random_elements extrayendo aleatoriamente num_elements número de elementos de unique_elements. A continuación, devuelve random_elements.

💡

La función random.sample() selecciona aleatoriamente un número determinado de elementos no duplicados de una lista.

4. Mantener el orden durante la eliminación de duplicados

El método de deduplicación que utiliza la función set() hace que se ignore el orden existente en la lista. Veamos cómo evitar esto y conservar el orden al deduplicar.

En Python, puedes utilizar la clase OrderedDict del módulo collections y list() para eliminar duplicados de una lista conservando el orden. He aquí un ejemplo de código que los utiliza

from collections import OrderedDict
 
def remove_duplicates(lst):
    return list(OrderedDict.fromkeys(lst))
 
my_list = [1, 2, 3, 3, 4, 2, 1]
result = remove_duplicates(my_list)
print(result)
 
# Output
[1, 2, 3, 4]

En el código anterior, la función OrderedDict.fromkeys() se utiliza para crear un diccionario ordenado con los duplicados eliminados, que luego se convierte de nuevo en una lista.

Un OrderedDict es una clase similar a un diccionario, pero manteniendo el orden de los elementos. Por lo tanto, si utilizas el método fromkeys() para crear un diccionario sin duplicados, el orden de los elementos se mantiene después de eliminar los duplicados. Luego usamos la función list() para convertir el diccionario de nuevo en una lista.

5. Eliminar duplicados y ordenar la lista

Para eliminar duplicados y ordenar un elemento de una lista en Python, puedes hacer lo siguiente

  1. crear una nueva lista con los duplicados eliminados.
  2. ordenar la lista recién creada.

Aquí hay un ejemplo de código para implementar esto.

def remove_duplicates_and_sort(lst):
    unique_elements = list(set(lst))
    sorted_elements = sorted(unique_elements)
    return sorted_elements
 
my_list = [3, 2, 1, 4, 3, 2, 1]
result = remove_duplicates_and_sort(my_list)
print(result)
 
# Output
[1, 2, 3, 4]

En el código anterior, usamos set() para eliminar duplicados, luego convertimos a list para crear una nueva lista, unique_elements.

A continuación, utilizamos la función sorted() para crear una sorted_elements que ordena unique_elements en orden ascendente. Luego devuelve elementos_ordenados.

💡

La función sorted() devuelve una nueva lista ordenada por la lista. Para más información, consulte el post Ordenar listas.

6. Cómo desduplicar dos listas

Cómo eliminar duplicados de dos listas se trata en la Sección 4 del post Unir listas.

Por favor, lee esa sección.

Conclusión

En este post, he tratado de responder a algunas de tus preguntas acerca de la eliminación de duplicados de listas en Python.

Espero que te ayude en tu trabajo práctico.

copyright for Lista Python Eliminar Duplicados: Explicaciones y Ejemplos

© 2023 All rights reserved.