Introducción
En este laboratorio, exploraremos cómo verificar si una lista tiene duplicados en Python. Comprender cómo identificar duplicados es crucial para la limpieza, análisis y optimización de datos.
Cubriremos dos métodos principales: comparar la longitud de la lista original con la longitud de su representación como conjunto, y utilizar el objeto collections.Counter. El laboratorio comienza definiendo qué son los duplicados y por qué es importante identificarlos, y luego proporciona ejemplos prácticos de código Python para demostrar cada método, incluyendo la creación de un archivo duplicates.py y la implementación de una función para encontrar duplicados dentro de una lista.
Definir duplicados
En este paso, exploraremos qué son los duplicados en el contexto de la programación y cómo identificarlos en Python. Comprender los duplicados es crucial para la limpieza, análisis y optimización de datos.
¿Qué son los Duplicados?
Los duplicados son simplemente valores repetidos dentro de un conjunto de datos o una colección de elementos. Por ejemplo, en la lista [1, 2, 2, 3, 4, 4, 4], los números 2 y 4 son duplicados porque aparecen más de una vez.
¿Por qué Identificar Duplicados?
Identificar y manejar duplicados es importante por varias razones:
- Precisión de los Datos: Los duplicados pueden distorsionar los resultados del análisis y llevar a conclusiones incorrectas.
- Eficiencia de Almacenamiento: Almacenar duplicados desperdicia espacio y recursos.
- Rendimiento: Procesar duplicados puede ralentizar algoritmos y aplicaciones.
Identificar Duplicados en Python
Comencemos creando un script de Python para identificar duplicados en una lista.
Abra su editor de VS Code.
Cree un nuevo archivo llamado
duplicates.pyen su directorio~/project.~/project/duplicates.pyAgregue el siguiente código al archivo
duplicates.py:def find_duplicates(data): seen = set() duplicates = [] for item in data: if item in seen: duplicates.append(item) else: seen.add(item) return duplicates numbers = [1, 2, 2, 3, 4, 4, 4, 5] duplicate_numbers = find_duplicates(numbers) print("Original list:", numbers) print("Duplicate numbers:", duplicate_numbers)Explicación:
- La función
find_duplicatestoma una listadatacomo entrada. - Utiliza un
setllamadoseenpara llevar un registro de los elementos que ha encontrado hasta el momento. Los conjuntos (sets) son útiles porque solo almacenan valores únicos. - Recorre la lista
data. Si un elemento ya está en el conjuntoseen, significa que es un duplicado, por lo que se agrega a la listaduplicates. De lo contrario, el elemento se agrega al conjuntoseen. - Finalmente, la función devuelve la lista
duplicates.
- La función
Ejecute el script utilizando el siguiente comando en su terminal:
python duplicates.pyDebería ver la siguiente salida:
Original list: [1, 2, 2, 3, 4, 4, 4, 5] Duplicate numbers: [2, 4, 4]Esta salida muestra la lista original y los números duplicados encontrados en la lista.
Comparar len() con len(set())
En este paso, exploraremos una forma más eficiente de detectar duplicados en una lista utilizando la función len() y la estructura de datos set(). Este método aprovecha el hecho de que los conjuntos (sets) solo almacenan elementos únicos.
Comprender len() y set()
len(): Esta función devuelve el número de elementos en una lista o cualquier otro objeto iterable.set(): Esta función convierte una lista (o cualquier iterable) en un conjunto (set). Un conjunto es una colección de elementos únicos, lo que significa que elimina automáticamente cualquier duplicado.
Cómo Funciona
La idea central es comparar la longitud de la lista original con la longitud del conjunto creado a partir de esa lista. Si las longitudes son diferentes, significa que había duplicados en la lista original.
Ejemplo
Modifiquemos el archivo duplicates.py que creamos en el paso anterior para utilizar este enfoque.
Abra el archivo
duplicates.pyen su directorio~/projectutilizando VS Code.Modifique el código para que sea el siguiente:
def has_duplicates(data): return len(data) != len(set(data)) numbers = [1, 2, 2, 3, 4, 4, 4, 5] if has_duplicates(numbers): print("The list contains duplicates.") else: print("The list does not contain duplicates.")Explicación:
- La función
has_duplicatesahora simplemente compara la longitud de la lista originaldatacon la longitud del conjunto creado a partir dedata. - Si las longitudes son diferentes, la función devuelve
True(lo que significa que hay duplicados), de lo contrario devuelveFalse.
- La función
Ejecute el script utilizando el siguiente comando en su terminal:
python duplicates.pyDebería ver la siguiente salida:
The list contains duplicates.Si cambia la lista
numbersa[1, 2, 3, 4, 5], la salida será:The list does not contain duplicates.
Este método es más conciso y a menudo más eficiente que el método anterior, especialmente para listas grandes.
Utilizar collections.Counter
En este paso, exploraremos una forma aún más poderosa y "pythonica" de contar duplicados utilizando la clase collections.Counter. Esta clase está específicamente diseñada para contar la frecuencia de elementos en una lista u otro iterable.
Comprender collections.Counter
La clase collections.Counter es una subclase de dict que está especialmente diseñada para contar objetos hashables. Almacena los elementos como claves de diccionario y sus conteos como valores de diccionario.
Cómo Funciona
collections.Counter cuenta automáticamente las ocurrencias de cada elemento en una lista. Luego, puedes acceder fácilmente a los conteos para identificar los duplicados.
Ejemplo
Modifiquemos el archivo duplicates.py en tu directorio ~/project para usar collections.Counter.
Abre el archivo
duplicates.pyen tu directorio~/projectutilizando VS Code.Modifica el código para que sea el siguiente:
from collections import Counter def find_duplicates_counter(data): counts = Counter(data) duplicates = [item for item, count in counts.items() if count > 1] return duplicates numbers = [1, 2, 2, 3, 4, 4, 4, 5] duplicate_numbers = find_duplicates_counter(numbers) print("Original list:", numbers) print("Duplicate numbers:", duplicate_numbers)Explicación:
- Importamos la clase
Counterdel módulocollections. - La función
find_duplicates_countercrea un objetoCountera partir de la lista de entradadata. Esto cuenta automáticamente las ocurrencias de cada elemento. - Luego, usamos una comprensión de lista para crear una lista de elementos que tienen un conteo mayor que 1 (es decir, duplicados).
- Importamos la clase
Ejecuta el script utilizando el siguiente comando en tu terminal:
python duplicates.pyDeberías ver la siguiente salida:
Original list: [1, 2, 2, 3, 4, 4, 4, 5] Duplicate numbers: [2, 4]Esta salida muestra la lista original y los números duplicados encontrados en la lista. Observa que el enfoque de
Countersolo devuelve los valores duplicados únicos, no todas las ocurrencias de los duplicados.
Resumen
En este laboratorio, comenzamos definiendo los duplicados como valores repetidos dentro de un conjunto de datos y destacando su impacto en la precisión de los datos, la eficiencia de almacenamiento y el rendimiento. Luego, creamos un script de Python para identificar duplicados en una lista utilizando una función find_duplicates.
La función itera a través de la lista de entrada, utilizando un set llamado seen para hacer un seguimiento de los elementos encontrados. Si un elemento ya está en seen, se identifica como un duplicado y se agrega a la lista duplicates. Este enfoque aprovecha la propiedad de valores únicos de los conjuntos (sets) para detectar duplicados de manera eficiente.



