Cum să eliminați duplicatele dintr-o listă în Python

⚡ Rezumat inteligent

Eliminarea duplicatelor dintr-un Python O listă poate fi realizată cu mai multe abordări predefinite, inclusiv set(), dict.fromkeys(), bucle, înțelegeri de liste și metode de bibliotecă din NumPy și Pandas, fiecare echilibrând păstrarea ordinii cu viteza.

  • 🔘 Setare metoda: Funcția set() returnează instantaneu elemente distincte, dar nu păstrează ordinea originală a listei.
  • ☑️ Ordinea păstrată: dict.fromkeys() și OrderedDict elimină duplicatele în timp ce keeping prima ordine de inserare văzută.
  • Control manual: O buclă for sau o înțelegere a unei liste cu verificare a apartenenței menține ordinea și rămâne lizibilă.
  • 🧪 Metode de bibliotecă: NumPy unique() și Pandas unique() deduplică datele și returnează ieșirea unei liste prin metoda tolist().
  • 🛠️ Limită de hașabilitate: Cheile set și dict necesită elemente hashabile, așadar listele sau dicționarele au nevoie de o abordare bazată pe bucle.
  • 🤖 Fluxuri de lucru bazate pe inteligența artificială: Conductele de învățare automată deduplică datele de antrenament cu ajutorul funcției drop_duplicates() din Pandas pentru a preveni erorile și scurgerile de date.

Eliminarea duplicatelor dintr-o listă în Python

Python eliminați duplicatele dintr-o listă

O listă este un container care conține diferite Python obiecte, care ar putea fi numere întregi, cuvinte, valori etc. Este echivalentul unui tablou în alte limbaje de programare.

Așadar, aici vom trece în revistă diferite modalități prin care putem elimina duplicatele dintr-o anumită listă. Python.

Metoda 1) Eliminați duplicatele din listă folosind Set

Pentru a elimina duplicatele dintr-o listă, puteți utiliza funcția set() încorporată. Particularitatea metodei set() este că returnează elemente distincte.

Avem o listă: [1,1,2,3,2,2,4,5,6,2,1]. Lista conține multe duplicate pe care trebuie să le eliminăm și să recuperăm doar elementele distincte. Lista este dată funcției încorporate set(). Later Lista finală este afișată folosind funcția încorporată list().

Rezultatul pe care îl obținem este reprezentat de elemente distincte în care toate elementele duplicate sunt eliminate.

Exemplu

my_list = [1,1,2,3,2,2,4,5,6,2,1]
my_final_list = set(my_list)
print(list(my_final_list))

ieșire:

[1, 2, 3, 4, 5, 6]

Metoda 2) Utilizarea listei temporare

Pentru a elimina duplicatele dintr-o anumită listă, puteți utiliza o listă temporară goală. Pentru aceasta, mai întâi, va trebui să parcurgeți lista care conține duplicate și să adăugați elementele unice în lista temporară. Later lista temporară este atribuită listei principale.

Exemplu

Iată un exemplu funcțional folosind o listă temporară.

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)

ieșire:

List Before  [1, 2, 3, 1, 2, 4, 5, 4, 6, 2]
List After removing duplicates  [1, 2, 3, 4, 5, 6]

Metoda 3) Utilizarea Dict

Putem elimina duplicatele din lista dată importând OrderedDict din colecții. Este disponibil de la Python 2.7 încoace. OrderedDict se ocupă de returnarea elementelor distincte în ordinea în care este prezentă cheia.

Să folosim o listă și să folosim metoda fromkeys() disponibilă în OrderedDict pentru a obține elementele unice din listă.

Pentru a utiliza metoda OrderedDict.fromkeys(), trebuie să importați OrderedDict din colecții, așa cum se arată mai jos:

from collections import OrderedDict

Iată un exemplu de eliminare a duplicatelor folosind metoda OrderedDict.fromkeys().

Exemplu

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

ieșire:

['a', 'x', 'y', 'b', 'c']

De la Python Începând cu versiunea 3.5+, putem folosi metoda obișnuită dict.fromkeys() pentru a obține elementele distincte din listă. Metoda dict.fromkeys() returnează chei unice și ajută la eliminarea valorilor duplicate.

Un exemplu care arată funcționarea funcției dict.fromkeys() pe o listă pentru a oferi elemente unice este următorul:

Exemplu

my_list = ['a','x','a','y','a','b','b','c']
my_final_list = dict.fromkeys(my_list)
print(list(my_final_list))

ieșire:

['a', 'x', 'y', 'b', 'c']

Metoda 4) Utilizarea for-loop

Utilizarea pentru buclă, vom parcurge lista de articole pentru a elimina duplicatele.

Mai întâi inițializați tabloul să fie gol, adică myFinallist = []. În interiorul buclei for, adăugați o verificare dacă elementele din listă există în tabloul myFinallist. Dacă elementele nu există, adăugați elementul în tabloul myFinallist folosind metoda append().

Așadar, ori de câte ori se întâlnește elementul duplicat, acesta va fi deja prezent în matricea myFinallist și nu va fi inserat. Să verificăm acum același lucru în exemplul de mai jos:

Exemplu

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

ieșire:

[1, 2, 3, 4, 5, 6]

Metoda 5) Utilizarea înțelegerii listelor

Listele de înțelegere sunt Python funcții care sunt utilizate pentru crearea de secvențe noi (cum ar fi liste, dicționare etc.) folosind secvențe care au fost deja create. Acest lucru vă ajută să reduceți buclele mai lungi și să faceți codul mai ușor de citit și întreținut.

Să folosim înțelegerea listei pentru a elimina duplicatele din lista dată.

Exemplu

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)

ieșire:

[1, 2, 3, 4, 5, 6]

Metoda 6) Utilizarea metodei NumPy unique()

Metoda unique() din modulul NumPy ne poate ajuta să eliminăm duplicatele din lista dată.

Pentru a lucra cu NumPy, importați mai întâi modulul numpy:

Pas 1) Importați modulul NumPy

import numpy as np

Pas 2) Folosește lista cu duplicate în cadrul metodei unique(). Rezultatul este convertit înapoi într-o listă folosind metoda tolist().

myFinalList = np.unique(my_list).tolist()

Pas 3) În final, imprimați lista:

print(myFinalList)

Codul final cu ieșire este după cum urmează:

import numpy as np
my_list = [1,2,2,3,1,4,5,1,2,6]
myFinalList = np.unique(my_list).tolist()
print(myFinalList)

ieșire:

[1, 2, 3, 4, 5, 6]

Metoda 7) Utilizarea metodelor Pandas

Modulul Pandas are o metodă unique() care ne va oferi elementele unice din lista dată.

Pentru a lucra cu modulul Pandas:

Pas 1) Import Pandas modul

import pandas as pd

Pas 2) Folosește lista ta cu duplicate în cadrul metodei unique():

myFinalList = pd.unique(my_list).tolist()

Pas 3) Printează lista:

print(myFinalList)

Codul final cu ieșire este după cum urmează:

import pandas as pd

my_list = [1,2,2,3,1,4,5,1,2,6]
myFinalList = pd.unique(my_list).tolist()
print(myFinalList)

ieșire:

[1, 2, 3, 4, 5, 6]

Metoda 8) Folosind enumerate() și înțelegerea listei

Aici folosim combinația dintre funcția „list comprehension” și „enumerate()” pentru a elimina elementele duplicate. Funcția „Enumerate” returnează un obiect cu un contor pentru fiecare element din listă. De exemplu, (0,1), (1,2) etc. Aici, prima valoare este indexul, iar a doua valoare este elementul din listă.

Fiecare element este verificat pentru a vedea dacă există în listă, iar dacă există, este eliminat din listă.

Exemplu

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

ieșire:

[1, 2, 3, 4, 5, 6]

Întrebări frecvente

Nu. O mulțime este o colecție neordonată, deci set() poate returna elemente într-o ordine diferită. Pentru a elimina duplicatele păstrând în același timp ordinea, utilizați dict.fromkeys() sau o buclă care adaugă doar elemente care nu au fost deja văzute.

Pentru liste mari, set() este cea mai rapidă atunci când ordinea nu contează, deoarece verificările de apartenență sunt O(1). Când ordinea contează, list(dict.fromkeys(my_list)) este aproape la fel de rapidă și păstrează prima ordine văzută pe o singură linie.

Funcțiile set() și dict.fromkeys() necesită elemente hashabile, deci eșuează pe liste sau dicționare. Parcurgeți lista și adăugați elemente care nu sunt deja văzute sau convertiți fiecare element într-un tuplu sau într-un șir JSON ca o cheie temporară.

Folosește list(dict.fromkeys(lista_mea)). Deoarece Python Dicționarele 3.7 păstrează ordinea de inserare, astfel încât cheile rămân în prima ordine vizibilă. În versiunile anterioare, se folosește collections.OrderedDict.fromkeys() pentru același rezultat.

Nu. Metode precum set(), dict.fromkeys(), comprehensions și NumPy sau Pandas unique() construiesc o listă nouă și lasă sursa neschimbată. Reatribuiți rezultatul aceleiași variabile dacă doriți să îl suprascrieți.

Folosește numpy.unique() sau pandas.unique() când datele se află deja în matrici sau într-o serie sau în timpul analizei datelor. Reține că numpy.unique() sortează și valorile, în timp ce pandas.unique() păstrează ordinea primei valori văzute. Apelează tolist() pentru o listă simplă.

Conductele de învățare automată elimină rândurile duplicate înainte de antrenament, astfel încât eșantioanele repetate să nu influențeze modelul sau să nu producă scurgeri între seturile de antrenament și cele de testare. Pandas drop_duplicates() este instrumentul comun pentru curățarea seturilor de date tabulare.

Da. GitHub Copilot și asistenții AI agențici generează cod de deduplicare set(), dict.fromkeys() sau Pandas dintr-un comentariu, sugerează opțiunea de păstrare a ordinii și refactorizează buclele, deși ar trebui să verificați în continuare cazurile limită, cum ar fi elementele care nu pot fi hașate.

Rezumați această postare cu: