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.

  • 🔘 Ställ in metod: set() returnerar distinkta element direkt men bevarar inte den ursprungliga listordningen.
  • ☑️ Ordning bevarad: dict.fromkeys() och OrderedDict tar bort dubbletter medan keeping den först sedda infogningsordern.
  • ✅ Manuell kontroll: En for-loop- eller listförståelse med en medlemskapskontroll håller ordning och förblir läsbar.
  • 🧪 Biblioteksmetoder: NumPy unique() och Pandas unique() deduplicerar data och returnerar listutdata via tolist()-metoden.
  • 🛠️ Hashbarhetsgräns: Set- och dict-nycklar kräver hashbara objekt, så listor eller ordböcker behöver en loopbaserad metod.
  • 🤖 AI-arbetsflöden: Maskininlärningspipeliner deduplicerar träningsdata med Pandas drop_duplicates() för att förhindra bias och dataläckage.

Ta bort dubbletter från en lista i Python

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]

Vanliga frågor

Nej. En mängd är en oordnad samling, så set() kan returnera element i en annan ordning. För att ta bort dubbletter samtidigt som ordningen bibehålls, använd dict.fromkeys() eller en loop som bara lägger till objekt som inte redan syns.

För stora listor är set() snabbast när ordningen inte spelar någon roll eftersom medlemskapskontrollerna är O(1). När ordningen spelar roll är list(dict.fromkeys(my_list)) nästan lika snabb och behåller den först sedda ordningen på en rad.

set() och dict.fromkeys() behöver hashbara element, så de misslyckas i listor eller ordböcker. Gå igenom listan och lägg till objekt som inte redan visas, eller konvertera varje objekt till en tupel eller JSON-sträng som en tillfällig nyckel.

Använd list(dict.fromkeys(min_lista)). Eftersom Python 3.7-ordböcker bevarar insättningsordningen, så nycklarna förblir i den ordning de sågs först. I tidigare versioner, använd collections.OrderedDict.fromkeys() för samma resultat.

Nej. Metoder som set(), dict.fromkeys(), comprehensions och NumPy eller Pandas unique() skapar en ny lista och lämnar källan oförändrad. Tilldela resultatet till samma variabel om du vill skriva över den.

Använd numpy.unique() eller pandas.unique() när data redan finns i arrayer eller en serie, eller under dataanalys. Observera att numpy.unique() också sorterar värdena, medan pandas.unique() behåller ordningen efter först sedda värden. Anropa tolist() för en vanlig lista.

Maskininlärningspipeliner tar bort dubbletter av rader före träning så att upprepade samplingar inte påverkar modellens spänningar eller läcker mellan tåg- och testuppsättningar. Pandas drop_duplicates() är det vanliga verktyget för att rengöra tabelldatauppsättningar.

Ja. GitHub Copilot och agentic AI-assistenter genererar set(), dict.fromkeys() eller Pandas dedupliceringskod från en kommentar, föreslår alternativet för ordningsbevarande och refaktorerar loopar, men du bör fortfarande verifiera edge-fall som icke-hashbara objekt.

Sammanfatta detta inlägg med: