Как да премахнете дубликати от списък в 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 връща обект с брояч за всеки елемент в списъка.

Обобщете тази публикация с: