Як видалити дублікати зі списку в Python
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) Використання тимчасового списку
Щоб видалити дублікати з даного list, ви можете скористатися порожнім тимчасовим списком. Для цього спочатку вам доведеться прокрутити список, що містить дублікати, і додати унікальні елементи до тимчасового списку. 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.fromkey() вам потрібно імпортувати 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() щоб отримати окремі елементи зі списку. The 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) Використовуйте свій список із дублікатами в унікальному методі, як показано нижче. Вихідні дані перетворюються назад у формат списку за допомогою 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 має a 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 повертає об’єкт із лічильником для кожного елемента списку. Наприклад (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]
Резюме
- Щоб видалити дублікати зі списку, ви можете скористатися вбудованою функцією
set(). Спеціальність вset()полягає в тому, що він повертає різні елементи. - Ви можете видалити дублікати з указаного списку шляхом імпорту
OrderedDictfromколекції. Він доступний, починаючи з python2.7.OrderedDictdictпіклується про повернення вам окремих елементів у порядку, в якому присутній ключ. - Ви можете скористатися циклом for, за допомогою якого ми будемо проходити список елементів, щоб видалити дублікати.
- Метод
unique()з модуля Numpy може допомогти нам видалити дублікат із наданого списку. - Модуль Pandas має a
unique()метод, який дасть нам унікальні елементи з наданого списку. - Комбінація розуміння списку та перерахування використовується для видалення повторюваних елементів зі списку. Enumerate повертає об’єкт із лічильником для кожного елемента списку.
