Hur man tar bort dubbletter från en lista i Python
⚡ Smart sammanfattning
Ta bort dubbletter från en Python list kan göras med flera inbyggda metoder, inklusive set(), dict.fromkeys(), loopar, listförståelsemetoder och biblioteksmetoder från NumPy och Pandas, där var och en balanserar ordningsbevarande mot hastighet.

Python ta bort dubbletter från en lista
En lista är en behållare som innehåller olika Python objekt, som kan vara heltal, ord, värden, etc. Det är motsvarigheten till en array i andra programmeringsspråk.
Så här ska vi gå igenom olika sätt på vilka vi kan ta bort dubbletter från en given lista i Python.
Metod 1) Ta bort dubbletter från listan med Set
För att ta bort dubbletter från en lista kan du använda den inbyggda funktionen set(). Det speciella med set()-metoden är att den returnerar distinkta element.
Vi har en lista: [1,1,2,3,2,2,4,5,6,2,1]. Listan har många dubbletter som vi behöver ta bort och bara få tillbaka de distinkta elementen. Listan ges till den inbyggda funktionen set(). Later Den slutliga listan visas med hjälp av den inbyggda funktionen list().
Utdata vi får är distinkta element där alla duplicerade element är eliminerade.
Exempelvis
my_list = [1,1,2,3,2,2,4,5,6,2,1]
my_final_list = set(my_list)
print(list(my_final_list))
Produktion:
[1, 2, 3, 4, 5, 6]
Metod 2) Använda den tillfälliga listan
För att ta bort dubbletter från en given lista kan du använda en tom tillfällig lista. Först måste du gå igenom listan med dubbletter och lägga till de unika objekten i den tillfälliga listan. Later den tillfälliga listan tilldelas huvudlistan.
Exempelvis
Här är ett fungerande exempel med en tillfällig lista.
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)
Produktion:
List Before [1, 2, 3, 1, 2, 4, 5, 4, 6, 2] List After removing duplicates [1, 2, 3, 4, 5, 6]
Metod 3) Använda Dict
Vi kan ta bort dubbletter från den givna listan genom att importera OrderedDict från samlingar. Det är tillgängligt från och med python 2.7. OrderedDict tar hand om att returnera de distinkta elementen i den ordning där nyckeln finns.
Låt oss använda en lista och metoden fromkeys() som finns tillgänglig i OrderedDict för att hämta de unika elementen från listan.
För att använda metoden OrderedDict.fromkeys() måste du importera OrderedDict från samlingar, som visas nedan:
from collections import OrderedDict
Här är ett exempel på hur man tar bort dubbletter med hjälp av metoden OrderedDict.fromkeys().
Exempelvis
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))
Produktion:
['a', 'x', 'y', 'b', 'c']
Från Python Från version 3.5 och framåt kan vi använda den vanliga metoden dict.fromkeys() för att hämta de distinkta elementen från listan. Metoden dict.fromkeys() returnerar unika nycklar och hjälper till att bli av med dubbletter.
Ett exempel som visar hur dict.fromkeys() fungerar på en lista för att ge unika objekt är följande:
Exempelvis
my_list = ['a','x','a','y','a','b','b','c'] my_final_list = dict.fromkeys(my_list) print(list(my_final_list))
Produktion:
['a', 'x', 'y', 'b', 'c']
Metod 4) Använd for-loop
Använda för-loop, kommer vi att gå igenom listan med objekt för att ta bort dubbletter.
Initiera först arrayen till tom, dvs. myFinallist = []. Inuti for-loopen, lägg till en kontroll om objekten i listan finns i arrayen myFinallist. Om objekten inte finns, lägg till objektet i arrayen myFinallist med hjälp av metoden append().
Så närhelst det duplicerade objektet påträffas kommer det redan att finnas i arrayen myFinallist och kommer inte att infogas. Låt oss nu kontrollera detsamma i exemplet nedan:
Exempelvis
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))
Produktion:
[1, 2, 3, 4, 5, 6]
Metod 5) Använda listförståelse
Listförståelser är Python funktioner som används för att skapa nya sekvenser (som listor, ordböcker etc.) med sekvenser som redan har skapats. Detta hjälper dig att minska längre loopar och göra din kod lättare att läsa och underhålla.
Låt oss använda oss av listförståelse för att ta bort dubbletter från den angivna listan.
Exempelvis
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)
Produktion:
[1, 2, 3, 4, 5, 6]
Metod 6) Använda NumPy unique()-metoden
Metoden unique() från NumPy-modulen kan hjälpa oss att ta bort dubbletter från den givna listan.
För att arbeta med NumPy, importera först numpy-modulen:
Steg 1) Importera NumPy-modulen
import numpy as np
Steg 2) Använd din lista med dubbletter inuti unique()-metoden. Utdata konverteras tillbaka till en lista med hjälp av tolist()-metoden.
myFinalList = np.unique(my_list).tolist()
Steg 3) Skriv slutligen ut listan:
print(myFinalList)
Den slutliga koden med utdata är som följer:
import numpy as np my_list = [1,2,2,3,1,4,5,1,2,6] myFinalList = np.unique(my_list).tolist() print(myFinalList)
Produktion:
[1, 2, 3, 4, 5, 6]
Metod 7) Använda Pandas metoder
Pandas-modulen har en unik()-metod som ger oss de unika elementen från den angivna listan.
För att arbeta med Pandas-modulen:
Steg 1) Importera Panda-modul
import pandas as pd
Steg 2) Använd din lista med dubbletter inuti unique()-metoden:
myFinalList = pd.unique(my_list).tolist()
Steg 3) Skriv ut listan:
print(myFinalList)
Den slutliga koden med utdata är som följer:
import pandas as pd my_list = [1,2,2,3,1,4,5,1,2,6] myFinalList = pd.unique(my_list).tolist() print(myFinalList)
Produktion:
[1, 2, 3, 4, 5, 6]
Metod 8) Använd enumerate() och listförståelse
Här använder vi kombinationen av list comprehension och enumerate() för att ta bort dubbletter av element. Enumerate returnerar ett objekt med en räknare till varje element i listan. Till exempel (0,1), (1,2) etc. Här är det första värdet indexet och det andra värdet listobjektet.
Varje element kontrolleras för att se om det finns i listan, och om det gör det tas det bort från listan.
Exempelvis
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))
Produktion:
[1, 2, 3, 4, 5, 6]
