Как да премахнете дубликати от списък в Python
⚡ Умно обобщение
Премахване на дубликати от Python Списъкът може да се направи с няколко вградени подхода, включително set(), dict.fromkeys(), цикли, разбиране на списъци и библиотечни методи от NumPy и Pandas, като всеки балансира запазването на реда спрямо скоростта.

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) Използване на временния списък
За да премахнете дубликати от даден списък, можете да използвате празен временен списък. За целта първо ще трябва да прегледате списъка с дубликати и да добавите уникалните елементи към временния списък. 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.fromkeys(), трябва да импортирате 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(), за да получим отделните елементи от списъка. Методът 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-loop добавете проверка дали елементите от списъка съществуват в масива 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) Използвайте вашия списък с дубликати в метода unique(). Изходът се конвертира обратно в списък, използвайки метода 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 има метод 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() и разбиране на списък
Тук използваме комбинацията от list comprehension и 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]
