Acest articol se concentrează pe una dintre operațiunile de obținere a unei liste unice dintr-o listă care conține un posibil duplicat. Eliminarea duplicatelor din operațiunile de listă are un număr mare de aplicații și, prin urmare, cunoștințele sale sunt bine de a avea Piton.
np.concatenate
Modalități de a elimina duplicatele din listă:
Mai jos sunt metodele pe care le vom acoperi în acest articol:
- Folosind metoda set().
- Folosind înțelegerea listei
- Utilizarea listei de înțelegere cu enumera()
- Folosind collections.OrderedDict.fromkeys()
- Folosind în, nu în operatori
- Folosind înțelegerea listei și metoda Array.index().
- Folosind Metoda Counter().
- Folosind Metoda unică Numpy
- Folosind un Pandas DataFrame
Eliminați duplicatele din listă folosind metoda set().
Acesta este cel mai popular mod prin care duplicatele sunt eliminate din listă metoda set(). . Dar principalul și notabil dezavantaj al acestei abordări este că ordonarea elementului se pierde în această metodă specială.
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))> |
>
>Ieșire
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 3, 5, 6]>
Complexitatea timpului: Pe)
Complexitatea spațiului: Pe)
Eliminați duplicatele din listă folosind înțelegerea listei
Această metodă funcționează în mod similar cu metoda de mai sus, dar aceasta este doar o scurtă scurtătură a unei metode mai lungi realizată cu ajutorul înțelegerea listei. Ordin
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))> |
>
>Ieșire
The original list is : [1, 3, 5, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 3, 5, 6]>
Complexitatea timpului: Pe)
Complexitatea spațiului: Pe)
Eliminați duplicatele din listă folosind înțelegerea listei cu enumerate()
The înțelegerea listei cuplat cu funcția de enumerare poate îndeplini și această sarcină. Practic caută elemente care au apărut deja și omite adăugarea lor. Păstrează ordinea listei.
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))> |
>
>Ieșire
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 5, 3, 6]>
Complexitatea timpului: O(n^2)
Complexitatea spațiului: Pe)
Eliminați duplicatele din listă în python folosind collections.OrderedDict.fromkeys()
Aceasta este cea mai rapidă metodă de a realiza o anumită sarcină. Mai întâi elimină duplicatele și returnează un dicționar care trebuie convertit într-o listă. Acest lucru funcționează bine și în cazul șirurilor.
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))> |
>
>Ieșire
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 5, 3, 6]>
Complexitatea timpului: Pe)
Complexitatea spațiului: Pe)
switch case java
Eliminați duplicatele din listă folosind operatorii in, nu în
În aceasta, repetăm lista și menținem o listă corespunzătoare cu ea care conține elementul listei de intrare și înainte de a adăuga noul element la lista corespunzătoare verificăm dacă elementul există deja sau nu în lista corespunzătoare și în acest fel putem elimina duplicatul listei de intrare.
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))> |
>
>Ieșire
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 5, 3, 6]>
Complexitatea timpului: O(n^2)
Complexitatea spațiului: Pe)
Eliminați duplicatele din listă folosind înțelegerea listei și metoda Array.index().
În această metodă, folosim înțelegerea listei pentru a itera peste listă și indexarea matricei pentru a obține elementul dintr-o matrice. Adăugăm elementele în matrice numai dacă primul index al unui element din matrice se potrivește cu indexul curent al elementului sau dacă neglijează elementul.
Piton
# 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)> |
>
>Ieșire
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] ('The list after removing duplicates :', [1, 5, 3, 6])> Complexitatea timpului: O(n^2)
Complexitatea spațiului: Pe)
Eliminați duplicatele din listă folosind sau Metoda Counter().
În această metodă, folosim Metoda Counter(). a face un dicționar dintr-o matrice dată. Acum recuperați toate cheile folosind chei() metodă care oferă numai valori unice din lista anterioară.
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)> |
>
>Ieșire
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 5, 3, 6]>
Complexitatea timpului: Pe)
Complexitatea spațiului: Pe)
Eliminați duplicatele din listă folosind metoda unică numpy
Această metodă este utilizată atunci când lista conține elemente de același tip și este folosită pentru a elimina duplicatele din listă. Mai întâi convertește lista în a matrice numpy și apoi folosește metoda numpy unique(). pentru a elimina toate elementele duplicate din listă.
Notă: Instalați modulul numpy folosind comanda pip install numpy duplicat
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))> |
>
>
Ieșire
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1 3 5 6]>
Complexitatea timpului: Pe)
Complexitatea spațiului: Pe)
Folosind cadrul de date panda
The pandas.DataFrame.drop_duplicates() metoda poate fi folosită și pentru a elimina duplicatele dintr-o listă. Metoda returnează un nou DataFrame cu duplicatele eliminate și datele originale ale cadrului de date cadru ramane neschimbat.
Algoritm:
Creați un cadru de date panda cu lista. Utilizați metoda drop_duplicates() pe DataFram și apoi convertiți DataFrame rezultat într-o listă.
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))> |
>
>
Ieșire:
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1 , 5 , 3, 6]>
Complexitatea timpului: Complexitatea de timp a metodei drop_duplicates() este O(n log n), deoarece sortează valorile înainte de a elimina duplicatele. Conversia din DataFrame într-o listă durează O(n) timp. Prin urmare, complexitatea de timp globală a acestei metode este O(n log n).
setarea căii python
Complexitatea spațiului: Complexitatea spațială a acestei metode este O(n) deoarece sunt create un nou DataFrame și o listă, fiecare cu n elemente.