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)