Як видалити дублікати зі списку в 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 повертає об’єкт із лічильником для кожного елемента списку.