logo

Python – Sätt att ta bort dubbletter från listan

Den här artikeln fokuserar på en av operationerna för att få en unik lista från en lista som innehåller en möjlig dubblett. Att ta bort dubbletter från listoperationen har ett stort antal applikationer och därför är dess kunskap bra att ha i Pytonorm.

genomgång av postorder

Sätt att ta bort dubbletter från listan:

Nedan är metoderna som vi kommer att täcka i den här artikeln:



  • Använder sig av set() metod
  • Använder sig av listförståelse
  • Att använda listförståelse med räkna upp()
  • Använder sig av collections.OrderedDict.fromkeys()
  • Använder in, inte in operatörer
  • Använder sig av listförståelse och Array.index()-metoden
  • Använder sig av Counter() metod
  • Använder sig av Numpy unik metod
  • Använder en Pandas DataFrame

Ta bort dubbletter från listan med metoden set().

Detta är det mest populära sättet att ta bort dubbletter från listan set() metod . Men den huvudsakliga och anmärkningsvärda nackdelen med detta tillvägagångssätt är att ordningen av elementet går förlorad i denna speciella metod.

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

>

>

Produktion

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

Tidskomplexitet: På)
Utrymmes komplexitet: På)

Ta bort dubbletter från listan med hjälp av listförståelse

Denna metod har fungerat på liknande sätt som ovanstående metod, men detta är bara en förkortning av en längre metod som görs med hjälp av listförståelse. beställa

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

>

>

Produktion

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

Tidskomplexitet: På)
Utrymmes komplexitet: På)

Ta bort dubbletter från listan med hjälp av listförståelse med enumerate()

De listförståelse i kombination med räkna upp funktionen kan också uppnå denna uppgift. Den letar i princip efter redan förekommande element och hoppar över att lägga till dem. Det bevarar listordningen.

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

>

>

Produktion

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

Tidskomplexitet: O(n^2)
Utrymmes komplexitet: På)

Ta bort dubbletter från listan i python med collections.OrderedDict.fromkeys()

Detta är den snabbaste metoden för att uppnå en viss uppgift. Den tar först bort dubbletterna och returnerar en ordbok som måste konverteras till en lista. Detta fungerar också bra när det gäller strängar.

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

>

>

Produktion

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

Tidskomplexitet: På)
Utrymmes komplexitet: På)

Ta bort dubbletter från listan med in, inte i operatorer

I denna itererar vi genom listan och upprätthåller en motsvarande lista med den som innehåller elementet i inmatningslistan och innan vi lägger till det nya elementet till motsvarande lista kontrollerar vi om elementet redan finns eller inte i motsvarande lista och på detta sätt vi kan ta bort dubbletten av inmatningslistan.

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

>

>

Produktion

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

Tidskomplexitet: O(n^2)
Utrymmes komplexitet: På)

Ta bort dubbletter från listan med listförståelse och Array.index()-metoden

I den här metoden använder vi listförståelse för att iterera över listan och arrayindexering för att hämta objektet från en array. Vi lägger bara till objekten i arrayen om det första indexet för ett element i arrayen matchar elementets nuvarande index eller annars försummar elementet.

Pytonorm




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

>

>

Produktion

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

Tidskomplexitet: O(n^2)
Utrymmes komplexitet: På)

Ta bort dubbletter från listan med hjälp av eller Counter() metod

I den här metoden använder vi Counter() metod att göra en ordbok från en given array. Hämta nu alla nycklar med hjälp av nycklar() metod som endast ger unika värden från föregående lista.

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

>

>

Produktion

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

Tidskomplexitet: På)
Utrymmes komplexitet: På)

prova catch block i java

Ta bort dubbletter från listan med den unika metoden numpy

Denna metod används när listan innehåller element av samma typ och används för att ta bort dubbletter från listan. Det konverterar först listan till en numpy array och använder sedan numpy unique() metod för att ta bort alla dubbletter från listan.

Obs: Installera numpy-modulen med kommandot pip install numpy duplicera

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

>

>

Produktion

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

Tidskomplexitet: På)
Utrymmes komplexitet: På)

Använder pandas dataram

De pandas.DataFrame.drop_duplicates() metod kan också användas för att ta bort dubbletter från en lista. Metoden returnerar en ny DataFrame med borttagna dubbletter och den ursprungliga dataramen ram förblir oförändrad.

Algoritm:

Skapa en pandadataram med listan. Använd metoden drop_duplicates() på DataFram och konvertera sedan den resulterande DataFrame till en lista.

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

>

>

Produktion:

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

Tidskomplexitet: Tidskomplexiteten för metoden drop_duplicates() är O(n log n) eftersom den sorterar värdena innan du tar bort dubbletter. Konverteringen från DataFrame till en lista tar O(n) tid. Därför är den totala tidskomplexiteten för denna metod O(n log n).

Utrymmes komplexitet: Rymdkomplexiteten för denna metod är O(n) eftersom en ny DataFrame och en lista skapas, var och en med n element.