Hogyan távolítsuk el az ismétlődéseket a listából Python

⚡ Okos összefoglaló

Másodpéldányok eltávolítása egy Python A lista számos beépített megközelítéssel elvégezhető, beleértve a set() és dict.fromkeys() metódusokat, ciklusokat, listaértelmezéseket, valamint a NumPy és Pandas könyvtári metódusait, amelyek mindegyike a sorrend megőrzését a sebességgel egyensúlyozza.

  • 🔘 Beállított módszer: A set() függvény azonnal visszaadja a különböző elemeket, de nem őrzi meg az eredeti lista sorrendjét.
  • ☑️ Megőrzött sorrend: A dict.fromkeys() és az OrderedDict eltávolítja a duplikátumokat, miközben kee-t használ.ping az elsőként látott beszúrási sorrend.
  • ✅ Manuális irányítás: Egy for ciklus vagy listafeldolgozás tagsági ellenőrzéssel rendet tart és olvasható marad.
  • 🧪 Könyvtári metódusok: A NumPy unique() és a Panda unique() metódusai deduplikálják az adatokat, és a tolist() metóduson keresztül listakimenetet adnak vissza.
  • 🇧🇷 Hashable korlát: A set és dict kulcsok hashable elemeket igényelnek, így a listák vagy szótárak ciklusalapú megközelítést igényelnek.
  • 🤖 AI munkafolyamatok: A gépi tanulási folyamatok a Panda drop_duplicates() függvényével deduplikálják a betanítási adatokat az elfogultság és az adatszivárgás megelőzése érdekében.

Duplikátumok eltávolítása egy listából itt: Python

Python duplikátumok eltávolítása a listából

A lista egy olyan tároló, amely különböző Python objektumok, amelyek lehetnek egész számok, szavak, értékek stb. Ez a tömb megfelelője más programozási nyelvekben.

Tehát itt áttekintjük a különböző módszereket, amelyekkel eltávolíthatjuk a duplikátumokat egy adott listából. Python.

1. módszer) Távolítsa el az ismétlődéseket a listáról a Set segítségével

A listából a duplikált elemek eltávolításához használhatod a beépített set() függvényt. A set() metódus specialitása, hogy különböző elemeket ad vissza.

Van egy listánk: [1,1,2,3,2,2,4,5,6,2,1]. A lista sok ismétlődő elemet tartalmaz, amelyeket el kell távolítanunk, és csak a különböző elemeket kell visszaadnunk. A listát átadjuk a beépített set() függvénynek. Later A végső lista a beépített list() függvénnyel jelenik meg.

A kapott kimenet különálló elemek, amelyekből az összes ismétlődő elem ki lett távolítva.

Példa

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

output:

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

2. módszer) Az ideiglenes lista használata

Egy adott listából duplikátumok eltávolításához használhat egy üres ideiglenes listát. Ehhez először végig kell menni a duplikátumokat tartalmazó listán, és hozzá kell adni az egyedi elemeket az ideiglenes listához. Later az ideiglenes lista a fő listához van hozzárendelve.

Példa

Íme egy működő példa egy ideiglenes lista használatával.

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)

output:

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

3. módszer) Dict

A megadott listából az OrderedDict gyűjteményekből történő importálásával távolíthatjuk el a duplikátumokat. Ez a python 2.7-es verziójától érhető el. Az OrderedDict gondoskodik arról, hogy a különböző elemeket a kulcs jelenlétének sorrendjében adja vissza.

Használjunk egy listát, és az OrderedDict-ben elérhető fromkeys() metódust a lista egyedi elemeinek kinyerésére.

Az OrderedDict.fromkeys() metódus használatához importálnia kell az OrderedDict-et gyűjteményekből, az alábbiak szerint:

from collections import OrderedDict

Íme egy példa a duplikátumok eltávolítására az OrderedDict.fromkeys() metódus használatával.

Példa

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

output:

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

tól Python A 3.5-ös verziótól kezdve a szokásos dict.fromkeys() metódust használhatjuk a lista különböző elemeinek kinyerésére. A dict.fromkeys() metódus egyedi kulcsokat ad vissza, és segít megszabadulni az ismétlődő értékektől.

Egy példa, amely bemutatja a dict.fromkeys() működését egy listán az egyedi elemek megadása érdekében, a következő:

Példa

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

output:

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

4. módszer) For-loop használata

<p></p> for-hurok, végigjárjuk az elemek listáját a duplikációk eltávolításához.

Először inicializáld a tömböt üresre, azaz myFinallist = []. A for cikluson belül adj hozzá egy ellenőrzést, hogy a lista elemei léteznek-e a myFinallist tömbben. Ha az elemek nem léteznek, akkor add hozzá az elemet a myFinallist tömbhöz az append() metódussal.

Tehát amikor a duplikált elemmel találkozunk, az már szerepelni fog a myFinallist tömbben, és nem kerül beillesztésre. Most ellenőrizzük ugyanezt az alábbi példában:

Példa

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

output:

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

5. módszer) A listaértés használata

A listaértések azok Python olyan függvények, amelyek új sorozatok (például listák, szótárak stb.) létrehozására szolgálnak már létrehozott sorozatok felhasználásával. Ez segít csökkenteni a hosszabb ciklusokat, és könnyebben olvashatóvá és karbantarthatóvá teszi a kódot.

Használjuk a listaértést, hogy eltávolítsuk a duplikációkat a megadott listából.

Példa

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)

output:

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

6. módszer) A NumPy unique() metódus használata

A NumPy modul unique() metódusa segíthet eltávolítani a duplikátumokat a megadott listából.

A NumPy használatához először importáld a numpy modult:

Step 1) NumPy modul importálása

import numpy as np

Step 2) Használd a listádat a duplikátumokkal a unique() metóduson belül. A kimenetet a tolist() metódus alakítja vissza listává.

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

Step 3) Végül nyomtasd ki a listát:

print(myFinalList)

A végső kód a kimenettel a következő:

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

output:

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

7. módszer) Panda módszerek használata

A Pandas modulnak van egy egyedi() metódusa, amely megadja az egyedi elemeket a megadott listából.

A Pandas modullal való munka:

Step 1) Importálja a Pandas modult

import pandas as pd

Step 2) Használd a listádat a duplikátumokkal a unique() metóduson belül:

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

Step 3) Nyomtasd ki a listát:

print(myFinalList)

A végső kód a kimenettel a következő:

import pandas as pd

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

output:

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

8. módszer) Az enumerate() és a listaértés használata

Itt a listaelemzés és az enumerate() kombinációját használjuk az ismétlődő elemek eltávolítására. Az Enumerate egy objektumot ad vissza, amely minden listaelemhez számlálót tartalmaz. Például (0,1), (1,2) stb. Itt az első érték az index, a második érték pedig a listaelem.

Minden elemet ellenőriznek, hogy létezik-e a listában, és ha igen, akkor eltávolítják a listából.

Példa

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

output:

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

GYIK

Nem. A halmaz egy rendezetlen gyűjtemény, így a set() függvény eltérő sorrendben adhatja vissza az elemeket. A duplikált elemek eltávolításához a sorrend megőrzése mellett használd a dict.fromkeys() függvényt, vagy egy olyan ciklust, amely csak a még nem látott elemeket fűzi hozzá.

Nagy listák esetén a set() a leggyorsabb, ha a sorrend nem számít, mivel a tagsági ellenőrzések O(1). Amikor a sorrend számít, a list(dict.fromkeys(my_list)) majdnem ilyen gyors, és az elsőként látott sorrendet egy sorban tartja.

A set() és a dict.fromkeys() függvényeknek hashable elemekre van szükségük, ezért listákon vagy szótárakon hibát jeleznek. Végigmegyünk a listán, és hozzáfűzünk még nem látott elemeket, vagy minden elemet tuple-lé vagy JSON sztringgé alakítunk ideiglenes kulcsként.

Használd a list(dict.fromkeys(my_list)) függvényt. Mivel Python A 3.7-es szótárak megőrzik a beszúrási sorrendet, így a kulcsok az első látott sorrendben maradnak. Korábbi verziókban a collections.OrderedDict.fromkeys() metódust kell használni ugyanerre az eredményre.

Nem. Az olyan metódusok, mint a set(), dict.fromkeys(), comprehensions, valamint a NumPy vagy a Pandas unique() egy új listát hoznak létre, és a forrást változatlanul hagyják. Rendeld hozzá az eredményt ugyanahhoz a változóhoz, ha felül szeretnéd írni.

Használd a numpy.unique() vagy a pandas.unique() függvényt, ha az adat már tömbökben vagy sorozatokban van, illetve adatelemzés közben. Megjegyzendő, hogy a numpy.unique() rendezi is az értékeket, míg a pandas.unique() az első látott sorrendet tartja meg. Egy sima lista megjelenítéséhez hívd meg a tolist() függvényt.

A gépi tanulási folyamatok a betanítás előtt elvetik az ismétlődő sorokat, így az ismétlődő minták nem torzítják a modellt, és nem szivárognak a vonat és a teszthalmazok között. A Panda drop_duplicates() nevű eszköze a táblázatos adathalmazok tisztításának gyakori eszköze.

Igen. A GitHub Copilot és az ügynöki mesterséges intelligencia asszisztensek set(), dict.fromkeys() vagy Pandas deduplikációs kódot generálnak egy megjegyzésből, javasolják a sorrendmegőrző opciót, és refaktorálják a ciklusokat, bár továbbra is ellenőrizni kell a peremrendszereket, például a nem hashable elemeket.

Foglald össze ezt a bejegyzést a következőképpen: