Lista única de Python: cómo obtener todos los valores únicos en una lista o matriz

Supongamos que tiene una lista que contiene números duplicados:

numbers = [1, 1, 2, 3, 3, 4] 

Pero quieres una lista de números únicos .

unique_numbers = [1, 2, 3, 4] 

Hay algunas formas de obtener una lista de valores únicos en Python. Este artículo le mostrará cómo.

Opción 1: uso de un conjunto para obtener elementos únicos

Usando una setforma única de hacerlo. Un conjunto es útil porque contiene elementos únicos.

Puede utilizar un conjunto para obtener los elementos únicos. Luego, convierta el conjunto en una lista.

Veamos dos enfoques que utilizan un conjunto y una lista. El primer enfoque es detallado, pero es útil para ver qué está sucediendo en cada paso del camino.

numbers = [1, 2, 2, 3, 3, 4, 5] def get_unique_numbers(numbers): list_of_unique_numbers = [] unique_numbers = set(numbers) for number in unique_numbers: list_of_unique_numbers.append(number) return list_of_unique_numbers print(get_unique_numbers(numbers)) # result: [1, 2, 3, 4, 5] 

Echemos un vistazo más de cerca a lo que está sucediendo. Me dan una lista de números numbers. Paso esta lista a la función get_unique_numbers.

Dentro de la función, creo una lista vacía, que eventualmente contendrá todos los números únicos. Luego, utilizo a setpara obtener los números únicos de la numberslista.

unique_numbers = set(numbers) 

Tengo lo que necesito: los números únicos. Ahora necesito poner estos valores en una lista. Para hacerlo, utilizo un bucle for para recorrer cada número del conjunto.

for number in unique_numbers: list_of_unique_numbers.append(number) 

En cada iteración agrego el número actual a la lista list_of_unique_numbers,. Finalmente, devuelvo esta lista al final del programa.

Hay una forma más corta de usar un conjunto y una lista para obtener valores únicos en Python. Eso es lo que abordaremos a continuación.

Un enfoque más corto con Set

Todo el código escrito en el ejemplo anterior se puede condensar en una línea con la ayuda de las funciones integradas de Python.

numbers = [1, 2, 2, 3, 3, 4, 5] unique_numbers = list(set(numbers)) print(unique_numbers) # Result: [1, 2, 3, 4, 5] 

Aunque este código se ve muy diferente al primer ejemplo, la idea es la misma. Utilice un conjunto para obtener los números únicos. Luego, convierta el conjunto en una lista.

unique_numbers = list(set(numbers)) 

Es útil pensar "de adentro hacia afuera" al leer el código anterior. El código más interna se evaluó por primera vez: set(numbers). A continuación, se evalúa el código más externa: list(set(numbers)).

Opción 2: uso de la iteración para identificar valores únicos

La iteración es otro enfoque a considerar.

La idea principal es crear una lista vacía que contenga números únicos. Luego, use un bucle for para iterar sobre cada número en la lista dada. Si el número ya está en la lista de exclusivos, continúe con la siguiente iteración. De lo contrario, agréguele el número.

Veamos dos formas de usar la iteración para obtener los valores únicos en una lista, comenzando con la más detallada.

numbers = [20, 20, 30, 30, 40] def get_unique_numbers(numbers): unique = [] for number in numbers: if number in unique: continue else: unique.append(number) return unique print(get_unique_numbers(numbers)) # Result: [20, 30, 40] 

Esto es lo que está sucediendo en cada paso del camino. Primero, me dan una lista de números numbers. Paso esta lista a mi función get_unique_numbers,.

Dentro de la función, se crea una lista vacía, unique. Eventualmente, esta lista contendrá todos los números únicos.

Utilizo un bucle for para recorrer cada número de la numberslista.

 for number in numbers: if number in unique: continue else: unique.append(number) 

El condicional dentro del ciclo comprueba si el número de la iteración actual está en la uniquelista. Si es así, el ciclo continúa con la siguiente iteración. De lo contrario, el número se agrega a esta lista.

Aquí está el punto importante: solo se agregan los números únicos. Una vez que se completa el ciclo, devuelvo uniqueque contiene todos los números únicos.

Un enfoque más corto con iteración

Hay otra forma de escribir la función en menos líneas.

numbers = [20, 20, 30, 30, 40] def get_unique_numbers(numbers): unique = [] for number in numbers: if number not in unique: unique.append(number) return unique #Result: [20, 30, 40] 

La diferencia es el condicional. Esta vez está configurado para leer así: si el número no está unique, agréguelo.

if number not in unique: unique.append(number) 

De lo contrario, el bucle se moverá al siguiente número de la lista numbers,.

El resultado es el mismo. Sin embargo, a veces es más difícil pensar y leer el código cuando se niega el booleano.

Hay otras formas de encontrar valores únicos en una lista de Python. Pero probablemente se encontrará buscando uno de los enfoques cubiertos en este artículo.

Escribo sobre aprender a programar y las mejores formas de hacerlo en amymhaddad.com. Sígueme en Twitter: @amymhaddad.