Как да премахнете дубликати от списък в 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 first import numpy module, трябва да изпълните следните стъпки:
Стъпка ) Импортиране на модул 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]
Oбобщение
- За да премахнете дубликатите от списък, можете да използвате вградената функция
set(). Специалността наset()е, че връща отделни елементи. - Можете да премахнете дубликати от дадения списък чрез импортиране
OrderedDictfromколекции. Предлага се от python2.7 нататък.OrderedDictdictсе грижи да ви върне отделните елементи в ред, в който присъства ключът. - Можете да използвате for-цикъл, който ще обходим списъка с елементи, за да премахнем дубликати.
- Метод
unique()от модула Numpy може да ни помогне да премахнем дубликата от дадения списък. - Модулът Pandas има a
unique()метод, който ще ни даде уникалните елементи от дадения списък. - Комбинацията от разбиране на списък и изброяване се използва за премахване на дублиращите се елементи от списъка. Enumerate връща обект с брояч за всеки елемент в списъка.
