Šajā rakstā ir apskatīta viena no darbībām, kā iegūt unikālu sarakstu no saraksta, kurā ir iespējams dublikāts. Dublikātu noņemšanai no saraksta darbības ir liels lietojumprogrammu skaits, un tāpēc tās zināšanas ir noderīgas Python.
preity zinta
Veidi, kā noņemt dublikātus no saraksta:
Tālāk ir norādītas metodes, kuras mēs apskatīsim šajā rakstā:
- Izmantojot set() metode
- Izmantojot saraksta izpratne
- Izmantojot saraksta izpratni ar uzskaitīt ()
- Izmantojot collections.OrderedDict.fromkeys()
- Izmantojot iekšā, nevis iekšā operatoriem
- Izmantojot saraksta izpratne un Array.index() metodi
- Izmantojot Counter() metode
- Izmantojot Numpy unikāla metode
- Izmantojot a Pandas DataFrame
Noņemiet dublikātus no saraksta, izmantojot set() metodi
Šis ir vispopulārākais veids, kā dublikāti tiek noņemti no saraksta set() metode . Taču šīs pieejas galvenais un ievērojamais trūkums ir tas, ka ar šo konkrēto metodi tiek zaudēta elementa secība.
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))> |
>
>Izvade
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 3, 5, 6]>
Laika sarežģītība: O(n)
Kosmosa sarežģītība: O(n)
Noņemiet dublikātus no saraksta, izmantojot saraksta izpratni
Šī metode darbojas līdzīgi iepriekšminētajai metodei, taču šī ir tikai vienas līnijas saīsinājums garākai metodei, kas veikta, izmantojot saraksta izpratne. pasūtījums
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))> |
>
>Izvade
The original list is : [1, 3, 5, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 3, 5, 6]>
Laika sarežģītība: O(n)
Kosmosa sarežģītība: O(n)
Noņemiet dublikātus no saraksta, izmantojot saraksta izpratni ar enumerate()
The saraksta izpratne kopā ar uzskaitīt funkciju var arī sasniegt šo uzdevumu. Tas pamatā meklē jau notikušus elementus un izlaiž to pievienošanu. Tas saglabā saraksta secību.
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))> |
>
>Izvade
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 5, 3, 6]>
Laika sarežģītība: O(n^2)
Kosmosa sarežģītība: O(n)
Noņemiet dublikātus no python saraksta, izmantojot collections.OrderedDict.fromkeys()
Šī ir ātrākā metode konkrēta uzdevuma izpildei. Vispirms tas noņem dublikātus un atgriež vārdnīcu, kas ir jāpārvērš sarakstā. Tas labi darbojas arī stīgu gadījumā.
Python3
virkņu masīvam java
# 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))> |
>
>Izvade
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 5, 3, 6]>
Laika sarežģītība: O(n)
Kosmosa sarežģītība: O(n)
Noņemiet dublikātus no saraksta, izmantojot in, nevis operatorus
Šajā mēs atkārtojam sarakstu un uzturam ar to atbilstošu sarakstu, kurā ir ievades saraksta elements un pirms jaunā elementa pievienošanas atbilstošajam sarakstam mēs pārbaudām, vai elements jau pastāv vai nav attiecīgajā sarakstā un šādā veidā mēs varam noņemt ievades saraksta dublikātu.
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))> |
>
>Izvade
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 5, 3, 6]>
Laika sarežģītība: O(n^2)
Kosmosa sarežģītība: O(n)
Noņemiet dublikātus no saraksta, izmantojot saraksta izpratne un Array.index() metode
Šajā metodē mēs izmantojam saraksta izpratni, lai atkārtotu sarakstu un masīva indeksēšanu, lai iegūtu vienumu no masīva. Mēs pievienojam vienumus masīvam tikai tad, ja masīva elementa pirmais indekss atbilst elementa pašreizējam indeksam vai arī elements netiek ņemts vērā.
Python
# 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)> |
>
>Izvade
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] ('The list after removing duplicates :', [1, 5, 3, 6])> Laika sarežģītība: O(n^2)
Kosmosa sarežģītība: O(n)
Noņemiet dublikātus no saraksta, izmantojot vai Counter() metode
Šajā metodē mēs izmantojam Counter() metode lai no dotā masīva izveidotu vārdnīcu. Tagad izgūstiet visas atslēgas, izmantojot atslēgas () metode, kas dod tikai unikālas vērtības no iepriekšējā saraksta.
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)> |
>
>Izvade
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 5, 3, 6]>
Laika sarežģītība: O(n)
Kosmosa sarežģītība: O(n)
Noņemiet dublikātus no saraksta, izmantojot numpy unikālo metodi
Šo metodi izmanto, ja sarakstā ir viena veida elementi, un to izmanto, lai no saraksta noņemtu dublikātus. Vispirms tas pārvērš sarakstu par a numpy masīvs un pēc tam izmanto numpy unikāla() metode lai no saraksta noņemtu visus dublētos elementus.
Piezīme. Instalējiet moduli numpy, izmantojot komandu pip install numpy dublikāts
Python3
# 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))> |
>
>
Izvade
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1 3 5 6]>
Laika sarežģītība: O(n)
Kosmosa sarežģītība: O(n)
Izmantojot pandas datu rāmi
The pandas.DataFrame.drop_duplicates() metodi var izmantot arī dublikātu noņemšanai no saraksta. Metode atgriež jaunu DataFrame ar noņemtiem dublikātiem un sākotnējos datu rāmja datus rāmis paliek nemainīgs.
Algoritms:
Izveidojiet pandas datu rāmi ar sarakstu. Izmantojiet metodi drop_duplicates() uz DataFram un pēc tam konvertējiet iegūto DataFrame par sarakstu.
Python3
mēģināt noķert java
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))> |
>
>
Izvade:
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1 , 5 , 3, 6]>
Laika sarežģītība: Metodes drop_duplicates() laika sarežģītība ir O(n log n), jo tā kārto vērtības pirms dublikātu noņemšanas. Pārveidošana no DataFrame uz sarakstu aizņem O(n) laiku. Tāpēc šīs metodes kopējā laika sarežģītība ir O (n log n).
Telpas sarežģītība: Šīs metodes telpas sarežģītība ir O(n), jo tiek izveidots jauns DataFrame un saraksts, katrs ar n elementiem.