Jak odstranit duplikáty ze seznamu v Python
⚡ Chytré shrnutí
Odstranění duplikátů z Python Seznam lze vytvořit pomocí několika vestavěných přístupů, včetně set(), dict.fromkeys(), cyklů, comprehensionů v seznamech a knihovních metod z NumPy a Pandas, přičemž každý z nich vyvažuje zachování pořadí a rychlost.

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 probereme různé způsoby, jak můžeme odstranit duplikáty z daného seznamu v Python.
Metoda 1) Odstraňte duplikáty ze seznamu pomocí Set
Pro odstranění duplikátů ze seznamu můžete použít vestavěnou funkci set(). Specialitou metody set() je, že vrací odlišné prvky.
Máme seznam: [1,1,2,3,2,2,4,5,6,2,1]. Seznam obsahuje mnoho duplikátů, které musíme odstranit a získat zpět pouze odlišné prvky. Seznam je předán vestavěné funkci set(). Later Konečný seznam se zobrazí pomocí vestavěné funkce list().
Výstupem, který dostaneme, jsou odlišné prvky, kde jsou všechny duplicitní prvky eliminovány.
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 z daného seznamu odstranit duplikáty, můžete použít prázdný dočasný seznam. Nejprve budete muset projít 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 funkční příklad s použitím 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 z daného seznamu můžeme odstranit importem OrderedDict z kolekcí. Je k dispozici od verze python 2.7. OrderedDict se postará o vrácení odlišných prvků v pořadí, v jakém je přítomen klíč.
Použijme seznam a metodu fromkeys() dostupnou v OrderedDict k získání unikátních prvků ze seznamu.
Abyste mohli použít metodu OrderedDict.fromkeys(), musíte importovat OrderedDict z kolekcí, jak je znázorněno níže:
from collections import OrderedDict
Zde je příklad odstranění duplicitních položek pomocí metody OrderedDict.fromkeys().
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 Od verze 3.5 a novější můžeme k získání jedinečných prvků ze seznamu použít běžnou metodu dict.fromkeys(). Metoda dict.fromkeys() vrací jedinečné klíče a pomáhá zbavit se duplicitních hodnot.
Příklad, který ukazuje fungování funkce dict.fromkeys() na seznamu pro zobrazení 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 na prázdné, tj. myFinallist = []. Uvnitř smyčky for přidejte kontrolu, zda položky ze seznamu existují v poli myFinallist. Pokud položky neexistují, přidejte je do pole myFinallist pomocí metody append().
Takže kdykoli se narazí na duplicitní položku, bude již přítomna v poli myFinallist a nebude vložena. Nyní se podívejme na totéž 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áty ze zadaného seznamu.
Pro práci s NumPy nejprve importujte modul numpy:
Krok 1) Importovat modul NumPy
import numpy as np
Krok 2) Použijte svůj seznam s duplikáty uvnitř metody unique(). Výstup je převeden zpět do seznamu pomocí metody tolist().
myFinalList = np.unique(my_list).tolist()
Krok 3) Nakonec vytiskněte seznam:
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á metodu unique(), která nám poskytne jedinečné prvky z uvedeného seznamu.
Pro práci s modulem Pandas:
Krok 1) Import modulu Pandas
import pandas as pd
Krok 2) Použijte svůj seznam s duplikáty uvnitř metody unique():
myFinalList = pd.unique(my_list).tolist()
Krok 3) Vytiskněte seznam:
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 používáme kombinaci list comprehension a enumerate() k odstranění duplicitních prvků. Enumerate vrací objekt s čítačem pro každý prvek v seznamu. Například (0,1), (1,2) atd. První hodnota je zde index a druhá hodnota je položka seznamu.
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]
