Hoe duplicaten uit een lijst te verwijderen in Python

⚡ Slimme samenvatting

Dubbele items verwijderen uit een Python Lijsten kunnen op verschillende ingebouwde manieren worden verwerkt, waaronder set(), dict.fromkeys(), lussen, list comprehensions en bibliotheekmethoden van NumPy en Pandas, waarbij elk een balans zoekt tussen het behoud van de volgorde en de snelheid.

  • 🔘 Setmethode: De functie `set()` retourneert direct unieke elementen, maar behoudt niet de oorspronkelijke volgorde van de lijst.
  • ☑️ Orde behouden: dict.fromkeys() en OrderedDict verwijderen duplicaten, terwijl keeping de eerst waargenomen invoegvolgorde.
  • Handmatige bediening: Een for-loop of list comprehension met een lidmaatschapscontrole zorgt voor een goede structuur en blijft leesbaar.
  • 🧪 Bibliotheekmethoden: De methoden NumPy unique() en Pandas unique() verwijderen duplicaten uit gegevens en retourneren een lijst als uitvoer via de tolist()-methode.
  • Hashbaarheidslimiet: Sets en dictionaries vereisen hashbare items, dus lijsten of dictionaries hebben een op lussen gebaseerde aanpak nodig.
  • 🤖 AI-workflows: Machine learning-pipelines verwijderen dubbele trainingsgegevens met Pandas drop_duplicates() om vertekening en datalekken te voorkomen.

Dubbele items uit een lijst verwijderen in Python

Python verwijder duplicaten uit een lijst

Een lijst is een container die verschillende bevat Python objecten, zoals gehele getallen, woorden, waarden, enz. Het is het equivalent van een array in andere programmeertalen.

We zullen hier dus verschillende manieren bespreken waarop we duplicaten uit een gegeven lijst kunnen verwijderen. Python.

Methode 1) Verwijder duplicaten uit de lijst met Set

Om duplicaten uit een lijst te verwijderen, kunt u de ingebouwde functie `set()` gebruiken. De bijzondere eigenschap van de `set()`-methode is dat deze unieke elementen retourneert.

We hebben een lijst: [1,1,2,3,2,2,4,5,6,2,1]. De lijst bevat veel duplicaten die we moeten verwijderen, zodat alleen de unieke elementen overblijven. De lijst wordt doorgegeven aan de ingebouwde functie `set()`. Later De uiteindelijke lijst wordt weergegeven met behulp van de ingebouwde functie list().

Het resultaat is een verzameling unieke elementen, waarbij alle dubbele elementen zijn verwijderd.

Voorbeeld

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

Output:

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

Methode 2) Gebruik van de tijdelijke lijst

Om duplicaten uit een lijst te verwijderen, kunt u een lege tijdelijke lijst gebruiken. Hiervoor moet u eerst de lijst met duplicaten doorlopen en de unieke items aan de tijdelijke lijst toevoegen. Later de tijdelijke lijst wordt toegewezen aan de hoofdlijst.

Voorbeeld

Hier volgt een werkend voorbeeld met een tijdelijke lijst.

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)

Output:

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

Methode 3) Dict gebruiken

We kunnen duplicaten uit de gegeven lijst verwijderen door OrderedDict uit de `collections`-bibliotheek te importeren. Deze bibliotheek is beschikbaar vanaf Python 2.7. OrderedDict zorgt ervoor dat de unieke elementen worden geretourneerd in de volgorde waarin de sleutel voorkomt.

Laten we een lijst gebruiken en de `fromkeys()`-methode van `OrderedDict` inzetten om de unieke elementen uit de lijst te halen.

Om de OrderedDict.fromkeys() methode te kunnen gebruiken, moet je OrderedDict importeren vanuit de collecties, zoals hieronder weergegeven:

from collections import OrderedDict

Hier volgt een voorbeeld van het verwijderen van duplicaten met behulp van de OrderedDict.fromkeys()-methode.

Voorbeeld

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

Output:

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

Vanaf Python Vanaf versie 3.5 kunnen we de reguliere `dict.fromkeys()`-methode gebruiken om de unieke elementen uit de lijst te halen. De `dict.fromkeys()`-methode retourneert unieke sleutels en helpt bij het verwijderen van dubbele waarden.

Een voorbeeld dat laat zien hoe dict.fromkeys() werkt op een lijst om de unieke items te verkrijgen, ziet er als volgt uit:

Voorbeeld

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

Output:

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

Methode 4) For-loop gebruiken

gebruik for loop, doorkruisen we de lijst met items om duplicaten te verwijderen.

Initialiseer eerst de array als leeg, d.w.z. myFinallist = []. Voeg binnen de for-loop een controle toe om te controleren of de items in de lijst al in de array myFinallist voorkomen. Als de items niet bestaan, voeg ze dan toe aan de array myFinallist met behulp van de append()-methode.

Als een item dubbel voorkomt, is het al aanwezig in de array myFinallist en wordt het niet opnieuw ingevoegd. Laten we dit nu controleren aan de hand van het onderstaande voorbeeld:

Voorbeeld

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

Output:

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

Methode 5) Lijstbegrip gebruiken

Lijstbegrippen zijn Python functies die worden gebruikt voor het maken van nieuwe reeksen (zoals lijsten, woordenboeken, enz.) met behulp van reeksen die al zijn gemaakt. Dit helpt u om langere lussen te verminderen en uw code gemakkelijker te lezen en te onderhouden.

Laten we gebruik maken van lijstbegrip om duplicaten uit de gegeven lijst te verwijderen.

Voorbeeld

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)

Output:

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

Methode 6) Gebruikmaken van de NumPy unique()-methode

De methode `unique()` uit de NumPy-module kan ons helpen duplicaten uit de gegeven lijst te verwijderen.

Om met NumPy te werken, moet je eerst de NumPy-module importeren:

Stap 1) Importeer de NumPy-module

import numpy as np

Stap 2) Gebruik je lijst met duplicaten binnen de `unique()`-methode. De uitvoer wordt vervolgens weer omgezet naar een lijst met behulp van de `tolist()`-methode.

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

Stap 3) Print tot slot de lijst:

print(myFinalList)

De uiteindelijke code met uitvoer is als volgt:

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

Output:

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

Methode 7) Pandas-methoden gebruiken

De Pandas-module heeft een unieke() methode die ons de unieke elementen uit de gegeven lijst geeft.

Om met de Pandas-module te werken:

Stap 1) Importeer Pandas-module

import pandas as pd

Stap 2) Gebruik je lijst met duplicaten binnen de unique()-methode:

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

Stap 3) Print de lijst:

print(myFinalList)

De uiteindelijke code met uitvoer is als volgt:

import pandas as pd

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

Output:

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

Methode 8) Enumerate() en lijstbegrip gebruiken

Hier gebruiken we een combinatie van list comprehension en enumerate() om de dubbele elementen te verwijderen. Enumerate retourneert een object met een teller voor elk element in de lijst. Bijvoorbeeld (0,1), (1,2), enzovoort. De eerste waarde is de index en de tweede waarde is het lijstitem.

Elk element wordt gecontroleerd om te zien of het in de lijst voorkomt, en zo ja, dan wordt het uit de lijst verwijderd.

Voorbeeld

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

Output:

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

Veelgestelde vragen

Nee. Een set is een ongeordende verzameling, dus `set()` kan elementen in een andere volgorde retourneren. Om duplicaten te verwijderen en tegelijkertijd de volgorde te behouden, gebruik je `dict.fromkeys()` of een lus die alleen items toevoegt die nog niet eerder zijn gezien.

Voor grote lijsten is `set()` het snelst als de volgorde er niet toe doet, omdat de lidmaatschapscontroles O(1) zijn. Als de volgorde er wel toe doet, is `list(dict.fromkeys(my_list))` bijna net zo snel en behoudt de volgorde van eerst geziene elementen in één regel.

`set()` en `dict.fromkeys()` vereisen hashbare elementen, dus ze werken niet met lijsten of dictionaries. Loop door de lijst en voeg items toe die nog niet zijn gezien, of converteer elk item naar een tuple of JSON-string als tijdelijke sleutel.

Gebruik list(dict.fromkeys(my_list)). Omdat Python In versie 3.7 behouden woordenboeken de invoegvolgorde, waardoor de sleutels in de volgorde van eerste waarneming blijven staan. In eerdere versies kunt u `collections.OrderedDict.fromkeys()` gebruiken voor hetzelfde resultaat.

Nee. Methoden zoals `set()`, `dict.fromkeys()`, list comprehensions en `unique()` van NumPy of Pandas maken een nieuwe lijst aan en laten de bron ongewijzigd. Wijs het resultaat opnieuw toe aan dezelfde variabele als je deze wilt overschrijven.

Gebruik numpy.unique() of pandas.unique() wanneer de gegevens zich al in arrays of een Series bevinden, of tijdens data-analyse. Merk op dat numpy.unique() de waarden sorteert, terwijl pandas.unique() de volgorde van eerst geziene waarden behoudt. Roep tolist() aan voor een gewone lijst.

Machine learning-pipelines verwijderen dubbele rijen vóór de training, zodat herhaalde voorbeelden het model niet vertekenen of tussen trainings- en testsets lekken. Pandas drop_duplicates() is een veelgebruikt hulpmiddel voor het opschonen van tabulaire datasets.

Ja. GitHub Copilot en AI-assistenten genereren code voor het verwijderen van duplicaten met behulp van `set()`, `dict.fromkeys()` of Pandas op basis van een opmerking, stellen de optie voor om de volgorde te behouden en herschrijven lussen. Je moet echter nog steeds uitzonderingen zoals items die niet gehasht kunnen worden, controleren.

Vat dit bericht samen met: