Jak odstranit duplikáty ze seznamu v Python

Python odstranit duplikáty ze seznamu

Seznam je kontejner, který obsahuje různé Python objekty, což mohou být celá čísla, slova, hodnoty atd. Je to ekvivalent pole v jiných programovacích jazycích.

Zde si tedy projdeme různé způsoby, jak můžeme odstranit duplikáty z daného seznamu Python.

Metoda 1) Odstraňte duplikáty ze seznamu pomocí Set

Chcete-li odstranit duplikáty ze seznamu, můžete použít vestavěnou funkci set(). Specialitou metody set() je to, že vrací odlišné prvky.

Máme seznam: [1,1,2,3,2,2,4,5,6,2,1]. Seznam má mnoho duplikátů, které musíme odstranit a získat zpět pouze odlišné prvky. Seznam je dán set() vestavěná funkce. Later konečný seznam se zobrazí pomocí list() vestavěná funkce, jak je znázorněno na příkladu níže.


Výstupem jsou odlišné prvky, kde jsou odstraněny všechny duplicitní prvky.
Příklad

my_list = [1,1,2,3,2,2,4,5,6,2,1]
my_final_list = set(my_list)
print(list(my_final_list))

Výstup:

[1, 2, 3, 4, 5, 6]

Metoda 2) Použití dočasného seznamu

Chcete-li odstranit duplikáty z daného list, můžete použít prázdný dočasný seznam. Nejprve budete muset procházet seznam s duplikáty a přidat jedinečné položky do dočasného seznamu. Later dočasný seznam je přiřazen k hlavnímu seznamu.

Příklad
Zde je pracovní příklad použití dočasného seznamu.

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)

Výstup:

List Before  [1, 2, 3, 1, 2, 4, 5, 4, 6, 2]
List After removing duplicates  [1, 2, 3, 4, 5, 6]

Metoda 3) Pomocí Dict

Duplikáty můžeme z daného seznamu odstranit importem OrderedDict ze sbírek. Je k dispozici od pythonu 2.7 výše. OrderedDict se postará o to, aby vám vrátil odlišné prvky v pořadí, ve kterém je klíč přítomen.

Využijme seznam a použijme fromkeys() metoda dostupná v OrderedDict k získání jedinečných prvků ze seznamu.

K využití OrderedDict.fromkey() metodou, musíte importovat OrderedDict z kolekcí, jak je znázorněno níže:

from collections import OrderedDict

Zde je příklad odstranění duplikátů pomocí OrderedDict.fromkeys() metoda.

Příklad

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))

Výstup:

['a', 'x', 'y', 'b', 'c']

od Python 3.5+ a výše, můžeme použít běžné dict.fromkeys() získat odlišné prvky ze seznamu. The dict.fromkeys() metody vracejí klíče, které jsou jedinečné a pomáhají zbavit se duplicitních hodnot.

Příklad, který ukazuje fungování dict.fromkeys() na seznamu pro přidělení jedinečných položek je následující:

Příklad

my_list = ['a','x','a','y','a','b','b','c']
my_final_list = dict.fromkeys(my_list)
print(list(my_final_list))

Výstup:

['a', 'x', 'y', 'b', 'c']

Metoda 4) Použití for-loop

Použití for-loop, projdeme seznam položek, abychom odstranili duplikáty.

Nejprve inicializujte pole, aby se vyprázdnilo, tzn myFinallist = [].Uvnitř for-loop přidejte kontrolu, zda položky v seznamu existují v poli myFinallist. Pokud položky neexistují, přidejte položku do pole myFinallist pomocí append() metoda.

Takže kdykoli narazíte na duplicitní položku, bude již přítomna v poli myFinallist a nebude vložena. Nyní totéž zkontrolujeme v níže uvedeném příkladu:

Příklad

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))

Výstup:

[1, 2, 3, 4, 5, 6]

Metoda 5) Použití porozumění seznamu

Seznam porozumění je Python funkce, které se používají pro vytváření nových sekvencí (jako jsou seznamy, slovníky atd.) pomocí sekvencí, které již byly vytvořeny. To vám pomůže omezit delší smyčky a usnadnit čtení a údržbu kódu.

Využijme porozumění seznamu k odstranění duplikátů z daného seznamu.

Příklad

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)

Výstup:

[1, 2, 3, 4, 5, 6]

Metoda 6) Použití metody Numpy unique().

Metoda unique() z modulu Numpy nám může pomoci odstranit duplikát z daného seznamu.

Chcete-li pracovat s modulem Numpy first import numpy, musíte provést tyto kroky:

Krok 1) Import modulu Numpy

import numpy as np

Krok 2) Použijte svůj seznam s duplikáty uvnitř jedinečné metody, jak je uvedeno níže. Výstup je převeden zpět do formátu seznamu pomocí tolist() metoda.

myFinalList = np.unique(my_list).tolist()

Krok 3) Nakonec vytiskněte seznam, jak je uvedeno níže:

print(myFinalList)

Konečný kód s výstupem je následující:

import numpy as np
my_list = [1,2,2,3,1,4,5,1,2,6]
myFinalList = np.unique(my_list).tolist()
print(myFinalList)

Výstup:

[1, 2, 3, 4, 5, 6]

Metoda 7) Použití metod Pandas

Modul Pandas má a unique() metoda, která nám poskytne jedinečné prvky z uvedeného seznamu.

Chcete-li pracovat s modulem Pandas, musíte provést následující kroky:

Krok 1) Import modulu Pandas

import pandas as pd

Krok 2) Použijte svůj seznam s duplikáty uvnitř unique() způsob, jak je ukázáno níže:

myFinalList = pd.unique(my_list).tolist()

Krok 3) Vytiskněte seznam, jak je uvedeno níže:

print(myFinalList)

Konečný kód s výstupem je následující:

import pandas as pd

my_list = [1,2,2,3,1,4,5,1,2,6]
myFinalList = pd.unique(my_list).tolist()
print(myFinalList)

Výstup:

[1, 2, 3, 4, 5, 6]

Metoda 8) Použití enumerate() a porozumění seznamu

Zde kombinace porozumění seznamu a výčtu k odstranění duplicitních prvků. Enumerate vrátí objekt s čítačem ke každému prvku v seznamu. Například (0,1), (1,2) atd. Zde je první hodnotou index a druhou hodnotou je položka seznamu. W

Každý prvek je zkontrolován, zda v seznamu existuje, a pokud ano, je ze seznamu odstraněn.

Příklad

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))

Výstup:

[1, 2, 3, 4, 5, 6]

Shrnutí

  • Chcete-li odstranit duplikáty ze seznamu, můžete použít vestavěnou funkci set(). Specialitou v set() metoda je, že vrací odlišné prvky.
  • Duplikáty můžete z daného seznamu odstranit importem OrderedDictfrom sbírky. Je k dispozici od pythonu 2.7 výše. OrderedDictdict postará se o to, aby vám vrátil odlišné prvky v pořadí, ve kterém je klíč přítomen.
  • Můžete použít for-loop, který projde seznam položek, abychom odstranili duplikáty.
  • Metoda unique() z modulu Numpy nám může pomoci odstranit duplikát z daného seznamu.
  • Modul Pandas má a unique() metoda, která nám poskytne jedinečné prvky z uvedeného seznamu.
  • Kombinace porozumění seznamu a výčtu se používá k odstranění duplicitních prvků ze seznamu. Enumerate vrátí objekt s čítačem ke každému prvku v seznamu.

Denní zpravodaj Guru99

Začněte svůj den s nejnovějšími a nejdůležitějšími zprávami o umělé inteligenci, které vám přinášíme právě teď.