Kuidas eemaldada loendist duplikaadid Python

⚡ Nutikas kokkuvõte

Duplikaatide eemaldamine Python list'i saab teha mitmete sisseehitatud lähenemisviisidega, sealhulgas set(), dict.fromkeys(), tsüklite, list'i mõistmise ja NumPy ning Panda teekimeetoditega, millest igaüks tasakaalustab järjestuse säilitamist kiirusega.

  • 🔘 Määratud meetod: Funktsioon set() tagastab koheselt erinevad elemendid, kuid ei säilita algset loendi järjekorda.
  • ☑️ Järjekord säilitatud: dict.fromkeys() ja OrderedDict eemaldavad duplikaadid, kui keeping esmanähtud sisestamise järjekord.
  • Käsitsi juhtimine: Liikmelisuse kontrolliga for-tsükli või loendi mõistmine hoiab korda ja jääb loetavaks.
  • 🧪 Raamatukogu meetodid: NumPy unique() ja Panda unique() deduplikeerivad andmed ja tagastavad loendi väljundi meetodi tolist() kaudu.
  • 🛠️ Hävitavuse piir: Set ja dict võtmed vajavad räsitavaid elemente, seega vajavad loendid või sõnastikud tsüklipõhist lähenemist.
  • 🤖 Tehisintellekti töövood: Masinõppe torujuhtmed eemaldavad treeningandmete duplikaadid Panda drop_duplicates() abil, et vältida eelarvamusi ja andmete lekkimist.

Duplikaatide eemaldamine loendist Python

Python eemaldage loendist duplikaadid

Loend on konteiner, mis sisaldab erinevaid Python objektid, mis võivad olla täisarvud, sõnad, väärtused jne. See on massiivi ekvivalent teistes programmeerimiskeeltes.

Seega vaatame siin erinevaid viise, kuidas duplikaate antud loendist eemaldada. Python.

1. meetod) Eemaldage loendist duplikaadid, kasutades valikut Määra

Loendist duplikaatide eemaldamiseks saate kasutada sisseehitatud funktsiooni set(). Meetodi set() eripäraks on see, et see tagastab erinevad elemendid.

Meil on loend: [1,1,2,3,2,2,4,5,6,2,1]. Loendis on palju duplikaate, mis tuleb eemaldada ja tagastada ainult erinevad elemendid. Loend antakse sisseehitatud funktsioonile set(). Later Lõplik nimekiri kuvatakse sisseehitatud funktsiooni list() abil.

Saadud väljund on erinevad elemendid, millest on eemaldatud kõik duplikaatelemendid.

Näide

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äljund:

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

2. meetod) Ajutise loendi kasutamine

Duplikaatide eemaldamiseks antud loendist saate kasutada tühja ajutist loendit. Selleks peate kõigepealt duplikaate sisaldava loendi läbi käima ja lisama ajutisele loendile unikaalsed üksused. Later ajutine nimekiri on määratud põhiloendile.

Näide

Siin on toimiv näide ajutise loendi kasutamisest.

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äljund:

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

3. meetod) Dict

Antud loendist saame duplikaate eemaldada, importides kollektsioonidest OrderedDicti. See on saadaval alates python 2.7 versioonist. OrderedDict hoolitseb selle eest, et tagastada teile erinevad elemendid järjekorras, milles võti esineb.

Kasutame loendit ja OrderedDictis saadaolevat meetodit fromkeys(), et loendist unikaalsed elemendid leida.

OrderedDict.fromkeys() meetodi kasutamiseks peate importima OrderedDict'i kollektsioonidest, nagu allpool näidatud:

from collections import OrderedDict

Siin on näide duplikaatide eemaldamiseks meetodi OrderedDict.fromkeys() abil.

Näide

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äljund:

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

alates Python Alates versioonist 3.5 saame loendist erinevate elementide saamiseks kasutada tavalist funktsiooni dict.fromkeys(). Meetod dict.fromkeys() tagastab unikaalsed võtmed ja aitab vabaneda duplikaatväärtustest.

Näide, mis demonstreerib dict.fromkeys() toimimist loendi puhul unikaalsete üksuste määramiseks, on järgmine:

Näide

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

Väljund:

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

4. meetod) For-loop kasutamine

Kasutamine for-loop, läbime duplikaatide eemaldamiseks üksuste loendi.

Esmalt initsialiseeri massiiv tühjaks, st myFinallist = []. Lisa for-tsüklisse kontroll, kas loendis olevad elemendid eksisteerivad massiivis myFinallist. Kui elemente ei eksisteeri, lisa element massiivi myFinallist append() meetodi abil.

Seega, kui duplikaatobjekt leitakse, on see juba massiivis myFinallist olemas ja seda ei lisata. Kontrollime nüüd sama allolevas näites:

Näide

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äljund:

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

5. meetod) Loendist arusaamise kasutamine

Loendi mõistmised on Python funktsioonid, mida kasutatakse uute jadade (nt loendid, sõnastikud jne) loomiseks, kasutades juba loodud jadasid. See aitab teil vähendada pikemaid silmuseid ning muuta koodi hõlpsamini loetavaks ja hooldatavaks.

Kasutame loendi mõistmist, et eemaldada antud loendist duplikaadid.

Näide

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äljund:

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

Meetod 6) NumPy unique() meetodi kasutamine

NumPy mooduli meetod unique() aitab meil antud loendist duplikaate eemaldada.

NumPy-ga töötamiseks importige kõigepealt numpy moodul:

Step 1) NumPy mooduli importimine

import numpy as np

Step 2) Kasuta oma nimekirja koos duplikaatidega unique() meetodi sees. Väljund teisendatakse tagasi nimekirjaks, kasutades tolist() meetodit.

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

Step 3) Lõpuks printige nimekiri välja:

print(myFinalList)

Lõplik kood koos väljundiga on järgmine:

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äljund:

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

7. meetod) Panda meetodite kasutamine

Panda moodulil on unikaalne() meetod, mis annab meile antud loendist ainulaadsed elemendid.

Pandase mooduliga töötamiseks:

Step 1) Impordi Panda moodul

import pandas as pd

Step 2) Kasutage oma nimekirja koos duplikaatidega unique() meetodi sees:

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

Step 3) Prindi nimekiri välja:

print(myFinalList)

Lõplik kood koos väljundiga on järgmine:

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äljund:

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

8. meetod) enumerate() ja loendi mõistmise kasutamine

Siin kasutame duplikaatelementide eemaldamiseks loendi mõistmise ja enumerate() kombinatsiooni. Enumerate tagastab objekti koos iga loendielemendi loenduriga. Näiteks (0,1), (1,2) jne. Siin on esimene väärtus indeks ja teine ​​väärtus loendielement.

Iga elemendi olemasolu loendis kontrollitakse ja kui on, siis see loendist eemaldatakse.

Näide

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äljund:

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

KKK

Ei. Hulk on järjestamata kogum, seega võib funktsioon set() tagastada elemente erinevas järjekorras. Duplikaatide eemaldamiseks järjekorra säilitamise kõrval kasutage funktsiooni dict.fromkeys() või tsüklit, mis lisab ainult neid elemente, mida veel pole nähtud.

Suurte loendite puhul on set() kiireim, kui järjestus pole oluline, kuna liikmelisuse kontrollid on O(1). Kui järjestus on oluline, on list(dict.fromkeys(my_list)) peaaegu sama kiire ja hoiab esmanähtud järjestuse ühel real.

set() ja dict.fromkeys() vajavad räsitavaid elemente, seega ei tööta need loendite või sõnastike puhul. Käi loendis tsüklit ja lisa sinna elemente, mida veel pole nähtud, või teisenda iga element ajutise võtmena tupleks või JSON-stringiks.

Kasuta list(dict.fromkeys(my_list)). Kuna Python 3.7 sõnaraamatud säilitavad sisestamise järjekorra, seega jäävad võtmed esmakordsel nägemisel järjekorda. Varasemates versioonides kasutage sama tulemuse saamiseks funktsiooni collections.OrderedDict.fromkeys().

Ei. Meetodid nagu set(), dict.fromkeys(), comprehensions ja NumPy või Pandas unique() loovad uue loendi ja jätavad lähtekoodi muutmata. Kui soovite tulemuse üle kirjutada, määrake see samale muutujale.

Kui andmed juba asuvad massiivides või seerias või andmete analüüsi ajal, kasutage funktsiooni numpy.unique() või pandas.unique(). Pange tähele, et numpy.unique() sorteerib ka väärtusi, samas kui pandas.unique() hoiab esmanähtud järjestust. Lihtloendi saamiseks kutsuge välja funktsioon tolist().

Masinõppe torujuhtmed eemaldavad enne treeningut duplikaatridad, et korduvad valimid ei moonutaks mudelit ega lekiks rongi ja testikomplektide vahel. Pandas drop_duplicates() on tavaline tööriist tabeliliste andmekogumite puhastamiseks.

Jah. GitHub Copiloti ja agentide tehisintellekti assistendid genereerivad kommentaarist funktsioone set(), dict.fromkeys() või Panda deduplikatsioonikoodi, pakuvad välja järjestuse säilitamise valiku ja refaktoreerivad tsükleid, kuigi peaksite ikkagi kontrollima äärejuhtumeid, näiteks mittehäšitavaid üksusi.

Võta see postitus kokku järgmiselt: