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.
- Crea una nueva lista con los duplicados eliminados.
- 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
- crear una nueva lista con los duplicados eliminados.
- 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.
