Унікальний список Python - Як отримати всі унікальні значення у списку або масиві

Скажімо, у вас є список, що містить повторювані номери:

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

Але вам потрібен список унікальних номерів.

unique_numbers = [1, 2, 3, 4] 

Є декілька способів отримати список унікальних значень у Python. Ця стаття покаже вам, як.

Варіант 1 - Використання набору для отримання унікальних елементів

Використовуючи setодин із способів це зробити. Набір корисний, оскільки містить унікальні елементи.

Ви можете використовувати набір, щоб отримати унікальні елементи. Потім перетворіть набір у список.

Давайте розглянемо два підходи, що використовують набір і список. Перший підхід - багатослівний, але корисно подивитися, що відбувається на кожному кроці.

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] 

Давайте детальніше розглянемо, що відбувається. Я дав список номерів, numbers. Я передаю цей список в функцію, get_unique_numbers.

Усередині функції я створюю порожній список, який з часом міститиме всі унікальні числа. Потім я використовую a, setщоб отримати унікальні номери зі numbersсписку.

unique_numbers = set(numbers) 

У мене є те, що мені потрібно: унікальні номери. Тепер мені потрібно внести ці значення до списку. Для цього я використовую цикл for для ітерації кожного числа в наборі.

for number in unique_numbers: list_of_unique_numbers.append(number) 

На кожній ітерації я додаю поточний номер до списку list_of_unique_numbers,. Нарешті, я повертаю цей список в кінці програми.

Існує коротший спосіб використання набору та списку для отримання унікальних значень у Python. Ось з чим ми і займемося далі.

Коротший підхід із набором

Весь код, написаний у наведеному вище прикладі, може бути зведений в один рядок за допомогою вбудованих функцій Python.

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

Хоча цей код виглядає дуже різним від першого прикладу, ідея така сама. Використовуйте набір, щоб отримати унікальні числа. Потім перетворіть набір у список.

unique_numbers = list(set(numbers)) 

Корисно думати “навиворіт”, читаючи вищезазначений код. Внутрішній код отримує оцінку першим: set(numbers). Потім зовнішній код обчислюється: list(set(numbers)).

Варіант 2 - Використання ітерації для виявлення унікальних цінностей

Ітерація - це ще один підхід для розгляду.

Основна ідея - створити порожній список, який міститиме унікальні числа. Потім використовуйте ітерацію циклу for над кожним числом у наведеному списку. Якщо номер уже є в унікальному списку, перейдіть до наступної ітерації. В іншому випадку додайте до нього номер.

Давайте розглянемо два способи використання ітерації для отримання унікальних значень у списку, починаючи з більш детального.

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] 

Ось що відбувається на кожному кроці. По- перше, мені дали список номерів, numbers. Я передаю цей список в мою функцію, get_unique_numbers.

Усередині функції, створити порожній список, unique. Врешті-решт, цей список міститиме всі унікальні номери.

Я використовую цикл for для перебору кожного числа у numbersсписку.

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

Умовна умова всередині циклу перевіряє, чи є номер поточної ітерації у uniqueсписку. Якщо так, цикл продовжується до наступної ітерації. В іншому випадку номер додається до цього списку.

Ось важливий момент: додаються лише унікальні цифри. Після завершення циклу я повертаюся, uniqueщо містить усі унікальні номери.

Коротший підхід з повторенням

Існує ще один спосіб записати функцію меншою кількістю рядків.

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] 

Різниця умовна. Цього разу він налаштований на читання так: якщо номер не вказаний unique, додайте його.

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

В іншому випадку цикл переміститься до наступного числа у списку numbers,.

Результат однаковий. Однак іноді важче думати і читати код, коли логічна значення заперечується.

Є й інші способи знайти унікальні значення у списку Python. Але ви, мабуть, виявите, що досягаєте одного з підходів, висвітлених у цій статті.

Я пишу про те, як навчитися програмувати, та про найкращі способи це зробити на amymhaddad.com. Слідуйте за мною у Twitter: @amymhaddad.