Як видалити дублікати зі списку в Python
⚡ Розумний підсумок
Видалення дублікатів з Python Список можна створити за допомогою кількох вбудованих підходів, включаючи set(), dict.fromkeys(), цикли, спискові обробники та бібліотечні методи з NumPy та Pandas, кожен з яких балансує між збереженням порядку та швидкістю.

Python видалити дублікати зі списку
Список — це контейнер, який містить різні Python об’єкти, які можуть бути цілими числами, словами, значеннями тощо. Це еквівалент масиву в інших мовах програмування.
Отже, тут ми розглянемо різні способи видалення дублікатів із заданого списку в Python.
Спосіб 1) Видаліть дублікати зі списку за допомогою Set
Щоб видалити дублікати зі списку, можна скористатися вбудованою функцією set(). Особливістю методу set() є те, що він повертає різні елементи.
У нас є список: [1,1,2,3,2,2,4,5,6,2,1]. Список містить багато дублікатів, які нам потрібно видалити та повернути лише окремі елементи. Список передається вбудованій функції set(). Later Остаточний список відображається за допомогою вбудованої функції list().
На виході ми отримуємо окремі елементи, де всі дублікати видаляються.
Приклад
my_list = [1,1,2,3,2,2,4,5,6,2,1]
my_final_list = set(my_list)
print(list(my_final_list))
вихід:
[1, 2, 3, 4, 5, 6]
Спосіб 2) Використання тимчасового списку
Щоб видалити дублікати зі списку, можна скористатися порожнім тимчасовим списком. Для цього спочатку потрібно буде перебрати список, що містить дублікати, і додати унікальні елементи до тимчасового списку. Later тимчасовий список призначається до основного списку.
Приклад
Ось робочий приклад використання тимчасового списку.
my_list = [1, 2, 3, 1, 2, 4, 5, 4 ,6, 2] print("List Before ", my_list) temp_list = [] for i in my_list: if i not in temp_list: temp_list.append(i) my_list = temp_list print("List After removing duplicates ", my_list)
вихід:
List Before [1, 2, 3, 1, 2, 4, 5, 4, 6, 2] List After removing duplicates [1, 2, 3, 4, 5, 6]
Спосіб 3) Використання Dict
Ми можемо видалити дублікати зі списку, імпортуючи OrderedDict з колекцій. Він доступний, починаючи з python2.7. OrderedDict повертає вам різні елементи в порядку присутності ключа.
Давайте скористаємося списком та застосуємо метод fromkeys(), доступний в OrderedDict, щоб отримати унікальні елементи зі списку.
Щоб скористатися методом OrderedDict.fromkeys(), потрібно імпортувати OrderedDict з колекцій, як показано нижче:
from collections import OrderedDict
Ось приклад видалення дублікатів за допомогою методу OrderedDict.fromkeys().
Приклад
from collections import OrderedDict my_list = ['a','x','a','y','a','b','b','c'] my_final_list = OrderedDict.fromkeys(my_list) print(list(my_final_list))
вихід:
['a', 'x', 'y', 'b', 'c']
З Python Починаючи з версії 3.5+, ми можемо використовувати звичайний метод dict.fromkeys() для отримання унікальних елементів зі списку. Метод dict.fromkeys() повертає унікальні ключі та допомагає позбутися дублікатів значень.
Приклад, який показує роботу dict.fromkeys() зі списком для отримання унікальних елементів, виглядає наступним чином:
Приклад
my_list = ['a','x','a','y','a','b','b','c'] my_final_list = dict.fromkeys(my_list) print(list(my_final_list))
вихід:
['a', 'x', 'y', 'b', 'c']
Спосіб 4) Використання циклу for
використання for-цикл, ми переглянемо список елементів, щоб видалити дублікати.
Спочатку ініціалізуйте масив порожнім, тобто myFinallist = []. Усередині циклу for додайте перевірку, чи існують елементи зі списку в масиві myFinallist. Якщо елементи не існують, додайте елемент до масиву myFinallist за допомогою методу append().
Отже, щоразу, коли зустрічається дублікат елемента, він вже буде присутній у масиві myFinallist і не буде вставлений. Давайте тепер перевіримо це в прикладі нижче:
Приклад
my_list = [1,2,2,3,1,4,5,1,2,6] myFinallist = [] for i in my_list: if i not in myFinallist: myFinallist.append(i) print(list(myFinallist))
вихід:
[1, 2, 3, 4, 5, 6]
Спосіб 5) Використання розуміння списку
Спискові розуміння є Python функції, які використовуються для створення нових послідовностей (таких як списки, словники тощо) з використанням уже створених послідовностей. Це допоможе вам зменшити довші цикли та полегшити читання та підтримку коду.
Давайте скористаємося розумінням списку, щоб видалити дублікати з наданого списку.
Приклад
my_list = [1,2,2,3,1,4,5,1,2,6] my_finallist = [] [my_finallist.append(n) for n in my_list if n not in my_finallist] print(my_finallist)
вихід:
[1, 2, 3, 4, 5, 6]
Спосіб 6) Використання методу NumPy unique()
Метод unique() з модуля NumPy може допомогти нам видалити дублікати зі списку.
Щоб працювати з NumPy, спочатку імпортуйте модуль numpy:
Крок 1) Імпорт модуля NumPy
import numpy as np
Крок 2) Використовуйте свій список з дублікатами всередині методу unique(). Вивід перетворюється назад у список за допомогою методу tolist().
myFinalList = np.unique(my_list).tolist()
Крок 3) Нарешті, роздрукуйте список:
print(myFinalList)
Кінцевий код із виводом виглядає наступним чином:
import numpy as np my_list = [1,2,2,3,1,4,5,1,2,6] myFinalList = np.unique(my_list).tolist() print(myFinalList)
вихід:
[1, 2, 3, 4, 5, 6]
Метод 7) Використання методів Pandas
Модуль Pandas має метод unique(), який надасть нам унікальні елементи з наданого списку.
Щоб працювати з модулем Pandas:
Крок 1) Імпортувати модуль Pandas
import pandas as pd
Крок 2) Використовуйте свій список з дублікатами всередині методу unique():
myFinalList = pd.unique(my_list).tolist()
Крок 3) Роздрукуйте список:
print(myFinalList)
Кінцевий код із виводом виглядає наступним чином:
import pandas as pd my_list = [1,2,2,3,1,4,5,1,2,6] myFinalList = pd.unique(my_list).tolist() print(myFinalList)
вихід:
[1, 2, 3, 4, 5, 6]
Метод 8) Використання enumerate() і розуміння списку
Тут ми використовуємо комбінацію спискового розгляду та enumerate() для видалення дублікатів елементів. Enumerate повертає об'єкт з лічильником для кожного елемента у списку. Наприклад (0,1), (1,2) тощо. Тут перше значення – це індекс, а друге значення – елемент списку.
Кожен елемент перевіряється на наявність у списку, і якщо так, то він видаляється зі списку.
Приклад
my_list = [1,2,2,3,1,4,5,1,2,6] my_finallist = [i for j, i in enumerate(my_list) if i not in my_list[:j]] print(list(my_finallist))
вихід:
[1, 2, 3, 4, 5, 6]
