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.
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]

