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 vset()
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.