Ця стаття присвячена одній із операцій отримання унікального списку зі списку, який містить можливий дублікат. Операція видалення дублікатів зі списку має велику кількість застосувань, тому її знання добре мати Python.
закони еквівалентності
Способи видалення дублікатів зі списку:
Нижче наведено методи, які ми розглянемо в цій статті.
- Використання метод set().
- Використання розуміння списку
- Використання розуміння списку з enumerate()
- Використання collections.OrderedDict.fromkeys()
- Використовуючи in, а не in оператори
- Використання розуміння списку і метод Array.index().
- Використання Метод Counter().
- Використання Унікальний метод Numpy
- Використовуючи a Pandas DataFrame
Видаліть дублікати зі списку за допомогою методу set().
Це найпопулярніший спосіб видалення дублікатів зі списку метод set(). . Але основним і помітним недоліком цього підходу є те, що в цьому конкретному методі втрачається порядок елементів.
Python3
# initializing list> test_list>=> [>1>,>5>,>3>,>6>,>3>,>5>,>6>,>1>]> print> (>'The original list is : '> >+> str>(test_list))> # using set() to remove duplicated from list> test_list>=> list>(>set>(test_list))> # printing list after removal> # distorted ordering> print> (>'The list after removing duplicates : '> >+> str>(test_list))> |
>
>Вихід
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 3, 5, 6]>
Часова складність: O(n)
Космічна складність: O(n)
Видаліть дублікати зі списку за допомогою розуміння списку
Цей метод працює подібно до наведеного вище, але це лише однорядкове скорочення довшого методу, виконаного за допомогою розуміння списку. порядок
Python3
# initializing list> test_list>=> [>1>,>3>,>5>,>6>,>3>,>5>,>6>,>1>]> print>(>'The original list is : '> >+> str>(test_list))> # using list comprehension to remove duplicated from list> res>=> []> [res.append(x)>for> x>in> test_list>if> x>not> in> res]> # printing list after removal> print> (>'The list after removing duplicates : '> >+> str>(res))> |
>
>Вихід
The original list is : [1, 3, 5, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 3, 5, 6]>
Часова складність: O(n)
Космічна складність: O(n)
Видаліть дублікати зі списку за допомогою функції розуміння списку за допомогою enumerate()
The розуміння списку укупі з функція перерахування також може виконати це завдання. В основному він шукає вже наявні елементи та пропускає їх додавання. Він зберігає порядок списку.
Python3
# initializing list> test_list>=> [>1>,>5>,>3>,>6>,>3>,>5>,>6>,>1>]> print> (>'The original list is : '> >+> str>(test_list))> # using list comprehension + enumerate() to remove duplicated from list> res>=> [i>for> n, i>in> enumerate>(test_list)>if> i>not> in> test_list[:n]]> # printing list after removal> print> (>'The list after removing duplicates : '> >+> str>(res))> |
>
>Вихід
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 5, 3, 6]>
Часова складність: O(n^2)
Космічна складність: O(n)
Видаліть дублікати зі списку в python за допомогою collections.OrderedDict.fromkeys()
Це найшвидший спосіб досягнення певного завдання. Спочатку видаляє дублікати та повертає словник, який потрібно перетворити на список. Це також добре працює у випадку рядків.
Python3
# using collections.OrderedDict.fromkeys()> from> collections>import> OrderedDict> # initializing list> test_list>=> [>1>,>5>,>3>,>6>,>3>,>5>,>6>,>1>]> print> (>'The original list is : '> >+> str>(test_list))> # using collections.OrderedDict.fromkeys() to remove duplicated from list> res>=> list>(OrderedDict.fromkeys(test_list))> # printing list after removal> print> (>'The list after removing duplicates : '> >+> str>(res))> |
>
>Вихід
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 5, 3, 6]>
Часова складність: O(n)
Космічна складність: O(n)
Видаліть дублікати зі списку за допомогою операторів in, а не in
У цьому випадку ми проходимо список і підтримуємо відповідний список із ним, який містить елемент вхідного списку, і перед додаванням нового елемента до відповідного списку ми перевіряємо, чи існує елемент у відповідному списку чи ні, і таким чином ми можемо видалити дублікат списку введення.
Python3
# initializing list> test_list>=> [>1>,>5>,>3>,>6>,>3>,>5>,>6>,>1>]> print>(>'The original list is : '> +> str>(test_list))> res>=> []> for> i>in> test_list:> >if> i>not> in> res:> >res.append(i)> # printing list after removal> print>(>'The list after removing duplicates : '> +> str>(res))> |
>
>Вихід
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 5, 3, 6]>
Часова складність: O(n^2)
Космічна складність: O(n)
Видаліть дублікати зі списку за допомогою розуміння списку та метод Array.index().
У цьому методі ми використовуємо розуміння списку для ітерації по списку та індексації масиву, щоб отримати елемент із масиву. Ми додаємо елементи до масиву, лише якщо перший індекс елемента в масиві збігається з поточним індексом елемента або в іншому випадку елемент ігнорується.
Python
епоха міа халіфа
# initializing list> arr>=> [>1>,>5>,>3>,>6>,>3>,>5>,>6>,>1>]> print> (>'The original list is : '>+> str>(arr))> # using list comprehension + arr.index()> res>=> [arr[i]>for> i>in> range>(>len>(arr))>if> i>=>=> arr.index(arr[i]) ]> # printing list after removal of duplicate> print>(>'The list after removing duplicates :'> >,res)> |
>
>Вихід
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] ('The list after removing duplicates :', [1, 5, 3, 6])> Часова складність: O(n^2)
Космічна складність: O(n)
Видаліть дублікати зі списку за допомогою або Метод Counter().
У цьому методі ми використовуємо Метод Counter(). щоб створити словник із заданого масиву. Тепер відновіть усі ключі за допомогою ключі() метод, який дає лише унікальні значення з попереднього списку.
Python3
from> collections>import> Counter> # initializing list> arr>=> [>1>,>5>,>3>,>6>,>3>,>5>,>6>,>1>]> print> (>'The original list is : '>+> str>(arr))> # using Counter() + keys() to remove duplicated from list> temp>=> Counter(arr)> res>=> [>*>temp]> # printing list after removal of duplicate> print>(>'The list after removing duplicates :'> >,res)> |
>
>Вихід
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 5, 3, 6]>
Часова складність: O(n)
Космічна складність: O(n)
Видаліть дублікати зі списку за допомогою унікального методу numpy
Цей метод використовується, коли список містить елементи одного типу, і використовується для видалення дублікатів зі списку. Спочатку він перетворює список на a масив numpy а потім використовує метод numpy unique(). щоб видалити всі повторювані елементи зі списку.
Примітка. Встановіть модуль numpy за допомогою команди pip install numpy дублікат
Python3
сортування в списку в java
# initializing list> test_list>=> [>1>,>5>,>3>,>6>,>3>,>5>,>6>,>1>]> print> (>'The original list is : '> >+> str>(test_list))> > # using numpy> import> numpy as np> > # removing duplicated from list> res>=> np.unique(test_list)> > # printing list after removal> print> (>'The list after removing duplicates : '> >+> str>(res))> |
>
>
Вихід
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1 3 5 6]>
Часова складність: O(n)
Космічна складність: O(n)
Використання кадру даних pandas
The pandas.DataFrame.drop_duplicates() метод також можна використовувати для видалення дублікатів зі списку. Метод повертає новий DataFrame з видаленими дублікатами та вихідні дані фрейму даних рамка залишається без змін.
Алгоритм:
Створіть фрейм даних pandas зі списком. Використовуйте метод drop_duplicates() для DataFram, а потім конвертуйте отриманий DataFrame у список.
Python3
import> pandas as pd> # initializing list> test_list>=> [>1>,>5>,>3>,>6>,>3>,>5>,>6>,>1>]> print>(>'The original list is : '> +> str>(test_list))> # creating DataFrame> df>=> pd.DataFrame({>'col'>: test_list})> # using drop_duplicates() method> df.drop_duplicates(inplace>=>True>)> # converting back to list> res>=> df[>'col'>].tolist()> # printing list after removal> print>(>'The list after removing duplicates : '> +> str>(res))> |
>
>
Вихід:
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1 , 5 , 3, 6]>
Часова складність: Часова складність методу drop_duplicates() становить O(n log n), оскільки він сортує значення перед видаленням дублікатів. Перетворення з DataFrame у список займає O(n) часу. Тому загальна часова складність цього методу становить O(n log n).
Складність простору: Складність простору цього методу становить O(n), оскільки створюється новий DataFrame і список, кожен з яких містить n елементів.