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