Python | Отримайте унікальні значення зі списку

У цій статті ми розглянемо різні техніки та стратегії для ефективного вилучення окремих елементів із заданого списку. Заглиблюючись у різноманітні методи від традиційних циклів до сучасних підходів Pythonic Python.

  Input : [  1,2, 1, 1, 3, 4, 3, 3, 5 ]   Output :   [1, 2, 3, 4, 5]    Explaination:   The output only contains the unique element from the input list. 

Отримайте унікальні значення зі списку

Нижче наведено теми, які ми розглянемо в цій статті:

  • Обхід в список
  • Використання встановити метод
  • Використання функція reduce().
  • Використання Operator.countOf() метод
  • Використання модуль панди
  • Використання numpy.unique
  • Використання collections.Counter()
  • Використання dict.fromkeys()

Отримайте унікальні значення зі списку шляхом обходу списку

Використовуючи обхід, ми можемо пройти для кожного елемента в списку та перевірити, чи елемент вже є в unique_list, якщо його там немає, тоді ми можемо додати його до unique_list. Це робиться за допомогою одного для циклу і інший оператор if, який перевіряє, чи є значення в унікальному списку чи ні, що еквівалентно іншому циклу for.

Python3




# function to get unique values> def> unique(list1):> > # initialize a null list> > unique_list> => []> > # traverse for all elements> > for> x> in> list1:> > # check if exists in unique_list or not> > if> x> not> in> unique_list:> > unique_list.append(x)> > # print list> > for> x> in> unique_list:> > print> x,> # driver code> list1> => [> 10> ,> 20> ,> 10> ,> 30> ,> 40> ,> 40> ]> print> (> 'the unique values from 1st list is'> )> unique(list1)> list2> => [> 1> ,> 2> ,> 1> ,> 1> ,> 3> ,> 4> ,> 3> ,> 3> ,> 5> ]> print> (> ' the unique values from 2nd list is'> )> unique(list2)>

Вихід

the unique values from 1st list is 10 20 30 40 the unique values from 2nd list is 1 2 3 4 5 

Часова складність: O(n*n)
Допоміжний простір: O(n)

Отримайте унікальні значення зі списку Використання методу Set

Використання набір() властивості Python, ми можемо легко перевірити наявність унікальних значень. Вставте значення списку в набір. Набір зберігає значення лише один раз, навіть якщо його вставлено кілька разів. Після вставки всіх значень у набір за допомогою list_set=set(list1), перетворіть цей набір на список, щоб надрукувати його.

Python3




def> unique(list1):> > # insert the list to the set> > list_set> => set> (list1)> > # convert the set to the list> > unique_list> => (> list> (list_set))> > for> x> in> unique_list:> > print> x,> # driver code> list1> => [> 10> ,> 20> ,> 10> ,> 30> ,> 40> ,> 40> ]> print> (> 'the unique values from 1st list is'> )> unique(list1)> list2> => [> 1> ,> 2> ,> 1> ,> 1> ,> 3> ,> 4> ,> 3> ,> 3> ,> 5> ]> print> (> ' the unique values from 2nd list is'> )> unique(list2)>

Вихід

the unique values from 1st list is 40 10 20 30 the unique values from 2nd list is 1 2 3 4 5 

Часова складність: O(n), де n – довжина списку.
Допоміжний простір: O(n), де n – довжина списку.

Отримайте унікальні значення зі списку в Python за допомогою функції reduce().

Використання імпорту Python зменшити() з functools і перебирає весь елемент і перевіряє, чи є елемент дублікатом або унікальним значенням. Нижче наведено реалізацію вищеописаного підходу.

Python3




from> functools> import> reduce> def> unique(list1):> > # Print directly by using * symbol> > ans> => reduce> (> lambda> re, x: re> +> [x]> if> x> not> in> re> else> re, list1, [])> > print> (ans)> # driver code> list1> => [> 10> ,> 20> ,> 10> ,> 30> ,> 40> ,> 40> ]> print> (> 'the unique values from 1st list is'> )> unique(list1)> list2> => [> 1> ,> 2> ,> 1> ,> 1> ,> 3> ,> 4> ,> 3> ,> 3> ,> 5> ]> print> (> ' the unique values from 2nd list is'> )> unique(list2)>

Вихід

the unique values from 1st list is [10, 20, 30, 40] the unique values from 2nd list is [1, 2, 3, 4, 5] 

Отримайте унікальні значення зі списку в Python за допомогою методу Operator.countOf().

Функція «unique» ініціалізує порожній «unique_list», а потім виконує ітерацію через «list1». Для кожного елемента «x» використовується « op.countOf() «, щоб перевірити, чи присутній «x» у «unique_list». Якщо не знайдено (рахунок дорівнює 0), «x» додається до «unique_list». Кінцеві унікальні значення друкуються за допомогою a петля . Код драйвера демонструє цей процес для двох списків, «список1» і «список2», демонструючи вилучення окремих елементів із кожного списку, зберігаючи їх вихідний порядок.

Python3




import> operator as op> # function to get unique values> def> unique(list1):> > # initialize a null list> > unique_list> => []> > # traverse for all elements> > for> x> in> list1:> > # check if exists in unique_list or not> > if> op.countOf(unique_list, x)> => => 0> :> > unique_list.append(x)> > # print list> > for> x> in> unique_list:> > print> (x)> # driver code> list1> => [> 10> ,> 20> ,> 10> ,> 30> ,> 40> ,> 40> ]> print> (> 'the unique values from 1st list is'> )> unique(list1)> list2> => [> 1> ,> 2> ,> 1> ,> 1> ,> 3> ,> 4> ,> 3> ,> 3> ,> 5> ]> print> (> ' the unique values from 2nd list is'> )> unique(list2)>

Вихід

the unique values from 1st list is 10 20 30 40 the unique values from 2nd list is 1 2 3 4 5 

Часова складність: O(N)
Допоміжний простір: O(N)

Отримайте унікальні значення зі списку в Python за допомогою модуля pandas

Функція «унікальний» використовує панди щоб створити серію зі списку1, потім використовує drop_duplicates() для усунення дублікатів і отримання списку унікальних значень. Згодом він перебирає унікальний список і друкує кожен елемент. Код драйвера демонструє процес для двох списків, «список1» і «список2», надаючи окремі значення для кожного списку.

Python3




import> pandas as pd> # function to get unique values> def> unique(list1):> > unique_list> => pd.Series(list1).drop_duplicates().tolist()> > for> x> in> unique_list:> > print> (x)> # driver code> list1> => [> 10> ,> 20> ,> 10> ,> 30> ,> 40> ,> 40> ]> print> (> 'the unique values from 1st list is'> )> unique(list1)> list2> => [> 1> ,> 2> ,> 1> ,> 1> ,> 3> ,> 4> ,> 3> ,> 3> ,> 5> ]> print> (> ' the unique values from 2nd list is'> )> unique(list2)> #This code is contributed by Vinay Pinjala.>

Вихід:

the unique values from 1st list is 10 20 30 40 the unique values from 2nd list is 1 2 3 4 5 

Часова складність: O(N)
Допоміжний простір: O(N)

Отримайте унікальні значення зі списку Використання numpy.unique

Використання імпорту Python numpy , також отримують унікальні елементи в масиві. На першому кроці перетворіть список на x=numpy.array(список) а потім використовуйте numpy.unique(x) функція для отримання унікальних значень зі списку. numpy.unique() повертає лише унікальні значення зі списку.

Python3




# using numpy.unique> import> numpy as np> def> unique(list1):> > x> => np.array(list1)> > print> (np.unique(x))> # driver code> list1> => [> 10> ,> 20> ,> 10> ,> 30> ,> 40> ,> 40> ]> print> (> 'the unique values from 1st list is'> )> unique(list1)> list2> => [> 1> ,> 2> ,> 1> ,> 1> ,> 3> ,> 4> ,> 3> ,> 3> ,> 5> ]> print> (> ' the unique values from 2nd list is'> )> unique(list2)>

Вихід:

the unique values from 1st list is [10 20 30 40] the unique values from 2nd list is [1 2 3 4 5] 

Часова складність: O(nlogn) завдяки використанню алгоритму сортування, який використовується функцією numpy.unique().
Допоміжні приміщення: O(n), оскільки функція numpy.unique() створює копію вхідного масиву, а потім сортує її перед поверненням унікальних елементів.

Отримання унікальних значень зі списку в Python за допомогою collections.Counter()

Використання Python для імпорту Counter() з колекції надрукувати всі ключі елементів Counter або ми надрукуємо безпосередньо за допомогою * символ. Нижче наведено реалізацію вищеописаного підходу.

Python3




from> collections> import> Counter> # Function to get unique values> def> unique(list1):> > # Print directly by using * symbol> > print> (> *> Counter(list1))> # driver code> list1> => [> 10> ,> 20> ,> 10> ,> 30> ,> 40> ,> 40> ]> print> (> 'the unique values from 1st list is'> )> unique(list1)> list2> => [> 1> ,> 2> ,> 1> ,> 1> ,> 3> ,> 4> ,> 3> ,> 3> ,> 5> ]> print> (> ' the unique values from 2nd list is'> )> unique(list2)>

Вихід

the unique values from 1st list is 10 20 30 40 the unique values from 2nd list is 1 2 3 4 5 

Часова складність: O(n) , де n – кількість елементів у вхідному списку.
Допоміжний простір: O(n)

Отримати унікальні значення зі списку за допомогою dict.fromkeys()

Використовуючи fromkeys() метод структури даних словника, ми можемо отримати унікальні елементи. По-перше, нам потрібно визначити список, який складається з повторюваних елементів. Потім нам потрібно використати змінну, у якій ми будемо зберігати результат після використання методу fromkeys(). перетворити цей результат у список, оскільки метод fromkeys() є частиною словника, тому за замовчуванням він повертає словник з усіма унікальними ключами та None як їхні значення.

Python3




# defining a list which consists duplicate values> list1> => [> 10> ,> 20> ,> 10> ,> 30> ,> 40> ,> 40> ]> list2> => [> 1> ,> 2> ,> 1> ,> 1> ,> 3> ,> 4> ,> 3> ,> 3> ,> 5> ]> # storing the result of the fromkeys()> # operation and converting it into list> unique_list_1> => list> (> dict> .fromkeys(list1))> unique_list_2> => list> (> dict> .fromkeys(list2))> # Printing the final result> print> (unique_list_1,unique_list_2,sep> => ' '> )>

Вихід

[10, 20, 30, 40] [1, 2, 3, 4, 5] 

Часова складність – O(n)
Просторова складність – O(n)