logo

Python – načini za odstranjevanje dvojnikov s seznama

Ta članek se osredotoča na eno od operacij pridobivanja enoličnega seznama s seznama, ki vsebuje možni dvojnik. Operacija odstranjevanja dvojnikov s seznama ima veliko število aplikacij, zato je dobro imeti njeno znanje Python.

zvezdna topologija

Načini za odstranitev dvojnikov s seznama:

Spodaj so metode, ki jih bomo obravnavali v tem članku:



Odstranite dvojnike s seznama z uporabo metode set().

To je najbolj priljubljen način za odstranitev dvojnikov s seznama metoda set(). . Toda glavna in opazna pomanjkljivost tega pristopa je, da se pri tej posebni metodi izgubi vrstni red elementov.

Python3








# initializing list> test_list>=> [>1>,>5>,>3>,>6>,>3>,>5>,>6>,>1>]> print> (>'The original list is : '> >+> str>(test_list))> # using set() to remove duplicated from list> test_list>=> list>(>set>(test_list))> # printing list after removal> # distorted ordering> print> (>'The list after removing duplicates : '> >+> str>(test_list))>

>

>

Izhod

The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 3, 5, 6]>

Časovna zapletenost: O(n)
Kompleksnost prostora: O(n)

Odstranite dvojnike s seznama z razumevanjem seznama

Ta metoda deluje podobno kot zgornja metoda, vendar je to le enovrstična okrajšava daljše metode, izvedene s pomočjo razumevanje seznama. naročilo

Python3




# initializing list> test_list>=> [>1>,>3>,>5>,>6>,>3>,>5>,>6>,>1>]> print>(>'The original list is : '> >+> str>(test_list))> # using list comprehension to remove duplicated from list> res>=> []> [res.append(x)>for> x>in> test_list>if> x>not> in> res]> # printing list after removal> print> (>'The list after removing duplicates : '> >+> str>(res))>

>

>

Izhod

The original list is : [1, 3, 5, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 3, 5, 6]>

Časovna zapletenost: O(n)
Kompleksnost prostora: O(n)

Odstranite dvojnike s seznama z razumevanjem seznama z enumerate()

The razumevanje seznama skupaj z funkcijo naštevanja lahko doseže tudi to nalogo. V bistvu išče že nastale elemente in preskoči njihovo dodajanje. Ohranja vrstni red seznama.

Python3




# initializing list> test_list>=> [>1>,>5>,>3>,>6>,>3>,>5>,>6>,>1>]> print> (>'The original list is : '> >+> str>(test_list))> # using list comprehension + enumerate() to remove duplicated from list> res>=> [i>for> n, i>in> enumerate>(test_list)>if> i>not> in> test_list[:n]]> # printing list after removal> print> (>'The list after removing duplicates : '> >+> str>(res))>

>

>

Izhod

The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 5, 3, 6]>

Časovna zapletenost: O(n^2)
Kompleksnost prostora: O(n)

Odstranite dvojnike s seznama v pythonu z uporabo collections.OrderedDict.fromkeys()

To je najhitrejši način za doseganje določene naloge. Najprej odstrani dvojnike in vrne slovar, ki ga je treba pretvoriti v seznam. To dobro deluje tudi v primeru nizov.

Python3




# using collections.OrderedDict.fromkeys()> from> collections>import> OrderedDict> # initializing list> test_list>=> [>1>,>5>,>3>,>6>,>3>,>5>,>6>,>1>]> print> (>'The original list is : '> >+> str>(test_list))> # using collections.OrderedDict.fromkeys() to remove duplicated from list> res>=> list>(OrderedDict.fromkeys(test_list))> # printing list after removal> print> (>'The list after removing duplicates : '> >+> str>(res))>

>

>

Izhod

The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 5, 3, 6]>

Časovna zapletenost: O(n)
Kompleksnost prostora: O(n)

Odstranite dvojnike s seznama z uporabo operatorjev in, ne in

Pri tem iteriramo po seznamu in z njim vzdržujemo ustrezen seznam, ki vsebuje element vhodnega seznama, in preden dodamo nov element ustreznemu seznamu, preverimo, ali element že obstaja ali ne na ustreznem seznamu in na ta način lahko odstranimo dvojnik vnosnega seznama.

Python3




# initializing list> test_list>=> [>1>,>5>,>3>,>6>,>3>,>5>,>6>,>1>]> print>(>'The original list is : '> +> str>(test_list))> res>=> []> for> i>in> test_list:> >if> i>not> in> res:> >res.append(i)> # printing list after removal> print>(>'The list after removing duplicates : '> +> str>(res))>

>

>

Izhod

The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 5, 3, 6]>

Časovna zapletenost: O(n^2)
Kompleksnost prostora: O(n)

Odstranite dvojnike s seznama z uporabo razumevanje seznama in metoda Array.index().

Pri tej metodi uporabljamo razumevanje seznama za ponavljanje po seznamu in indeksiranje matrike, da dobimo element iz matrike. Elemente dodamo v matriko le, če se prvi indeks elementa v matriki ujema s trenutnim indeksom elementa ali pa element zanemarimo.

Python


velikosti besedila iz lateksa



# initializing list> arr>=> [>1>,>5>,>3>,>6>,>3>,>5>,>6>,>1>]> print> (>'The original list is : '>+> str>(arr))> # using list comprehension + arr.index()> res>=> [arr[i]>for> i>in> range>(>len>(arr))>if> i>=>=> arr.index(arr[i]) ]> # printing list after removal of duplicate> print>(>'The list after removing duplicates :'> >,res)>

>

>

Izhod

The original list is : [1, 5, 3, 6, 3, 5, 6, 1] ('The list after removing duplicates :', [1, 5, 3, 6])>

Časovna zapletenost: O(n^2)
Kompleksnost prostora: O(n)

Odstranite dvojnike s seznama z uporabo oz Metoda Counter().

Pri tej metodi uporabljamo Metoda Counter(). da naredite slovar iz podane matrike. Zdaj pridobite vse ključe z uporabo ključi() metoda, ki daje samo edinstvene vrednosti s prejšnjega seznama.

Python3




from> collections>import> Counter> # initializing list> arr>=> [>1>,>5>,>3>,>6>,>3>,>5>,>6>,>1>]> print> (>'The original list is : '>+> str>(arr))> # using Counter() + keys() to remove duplicated from list> temp>=> Counter(arr)> res>=> [>*>temp]> # printing list after removal of duplicate> print>(>'The list after removing duplicates :'> >,res)>

>

>

Izhod

The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 5, 3, 6]>

Časovna zapletenost: O(n)
Kompleksnost prostora: O(n)

Odstranite dvojnike s seznama z edinstveno metodo numpy

Ta metoda se uporablja, ko seznam vsebuje elemente iste vrste in se uporablja za odstranjevanje dvojnikov s seznama. Najprej pretvori seznam v a niz numpy in nato uporabi metoda numpy unique(). da odstranite vse podvojene elemente s seznama.

Opomba: Namestite modul numpy z ukazom pip install numpy dvojnik

Python3


statična ključna beseda v Javi



# initializing list> test_list>=> [>1>,>5>,>3>,>6>,>3>,>5>,>6>,>1>]> print> (>'The original list is : '> >+> str>(test_list))> > # using numpy> import> numpy as np> > # removing duplicated from list> res>=> np.unique(test_list)> > # printing list after removal> print> (>'The list after removing duplicates : '> >+> str>(res))>

>

>

Izhod

The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1 3 5 6]>

Časovna zapletenost: O(n)
Kompleksnost prostora: O(n)

Uporaba podatkovnega okvirja pandas

The pandas.DataFrame.drop_duplicates() metodo lahko uporabite tudi za odstranjevanje dvojnikov s seznama. Metoda vrne nov DataFrame z odstranjenimi dvojniki in izvirne podatke okvira podatkov okvir ostane nespremenjena.

Algoritem:

Ustvarite podatkovni okvir pande s seznamom. Uporabite metodo drop_duplicates() na DataFramu in nato pretvorite dobljeni DataFrame v seznam.

Python3




import> pandas as pd> # initializing list> test_list>=> [>1>,>5>,>3>,>6>,>3>,>5>,>6>,>1>]> print>(>'The original list is : '> +> str>(test_list))> # creating DataFrame> df>=> pd.DataFrame({>'col'>: test_list})> # using drop_duplicates() method> df.drop_duplicates(inplace>=>True>)> # converting back to list> res>=> df[>'col'>].tolist()> # printing list after removal> print>(>'The list after removing duplicates : '> +> str>(res))>

>

>

Izhod:

The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1 , 5 , 3, 6]>

Časovna zahtevnost: Časovna kompleksnost metode drop_duplicates() je O(n log n), saj razvrsti vrednosti pred odstranitvijo dvojnikov. Pretvorba iz DataFrame v seznam traja O(n) časa. Zato je skupna časovna kompleksnost te metode O(n log n).

Kompleksnost prostora: Prostorska kompleksnost te metode je O(n), ker sta ustvarjena nov DataFrame in seznam, vsak z n elementi.