Tämä artikkeli keskittyy yhteen toimintoon, jolla saadaan yksilöllinen luettelo luettelosta, joka sisältää mahdollisen kaksoiskappaleen. Kaksoiskappaleiden poistamisella listatoiminnasta on suuri määrä sovelluksia, ja siksi sen tieto on hyvä käyttää Python.
np.sum
Tapoja poistaa kaksoiskappaleet luettelosta:
Alla on menetelmät, joita käsittelemme tässä artikkelissa:
- Käyttämällä set() -menetelmä
- Käyttämällä listan ymmärtäminen
- Listan ymmärtämisen käyttäminen kanssa luetella()
- Käyttämällä collections.OrderedDict.fromkeys()
- Käytä sisään, ei sisään operaattorit
- Käyttämällä listan ymmärtäminen ja Array.index() -menetelmä
- Käyttämällä Counter()-menetelmä
- Käyttämällä Numpy ainutlaatuinen menetelmä
- Käyttää Pandas DataFrame
Poista kaksoiskappaleet luettelosta käyttämällä set()-menetelmää
Tämä on suosituin tapa, jolla kaksoiskappaleet poistetaan luettelosta set() -menetelmä . Mutta tämän lähestymistavan tärkein ja huomattava haittapuoli on, että elementin järjestys menetetään tässä menetelmässä.
Python 3
# 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))> |
>
>Lähtö
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 3, 5, 6]>
Aika monimutkaisuus: Päällä)
Tilan monimutkaisuus: Päällä)
Poista kaksoiskappaleet luettelosta käyttämällä luettelon ymmärtämistä
Tämä menetelmä on toiminut samalla tavalla kuin yllä oleva menetelmä, mutta tämä on vain yksilinjainen lyhenne pidemmästä menetelmästä, joka on tehty listan ymmärtäminen. Tilaus
Python 3
# 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))> |
>
>Lähtö
The original list is : [1, 3, 5, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 3, 5, 6]>
Aika monimutkaisuus: Päällä)
Tilan monimutkaisuus: Päällä)
Poista kaksoiskappaleet luettelosta käyttämällä luettelon ymmärtämistä komennolla enumerate()
The listan ymmärtäminen yhdistettynä luetella toimintoa voi myös suorittaa tämän tehtävän. Se etsii periaatteessa jo esiintyneitä elementtejä ja ohittaa niiden lisäämisen. Se säilyttää luettelon järjestyksen.
Python 3
# 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))> |
>
>Lähtö
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 5, 3, 6]>
Aika monimutkaisuus: O(n^2)
Tilan monimutkaisuus: Päällä)
Poista kaksoiskappaleet pythonin luettelosta käyttämällä collections.OrderedDict.fromkeys()
Tämä on nopein tapa saavuttaa tietty tehtävä. Se poistaa ensin kaksoiskappaleet ja palauttaa sanakirjan, joka on muutettava luetteloksi. Tämä toimii hyvin myös merkkijonojen tapauksessa.
Python 3
# 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))> |
>
>Lähtö
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 5, 3, 6]>
Aika monimutkaisuus: Päällä)
Tilan monimutkaisuus: Päällä)
Poista kaksoiskappaleet luettelosta käyttämällä in, ei operaattoreita
Tässä iteroidaan listaa läpi ja ylläpidetään sen kanssa vastaavaa listaa, joka sisältää syöteluettelon elementin ja ennen uuden elementin lisäämistä vastaavaan listaan tarkistamme onko elementti jo olemassa vai ei vastaavassa listassa ja tällä tavalla voimme poistaa syöttöluettelon kaksoiskappaleen.
Python 3
# 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))> |
valinta lajittele java
>
>Lähtö
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 5, 3, 6]>
Aika monimutkaisuus: O(n^2)
Tilan monimutkaisuus: Päällä)
Poista kaksoiskappaleet luettelosta käyttämällä listan ymmärtäminen ja Array.index()-menetelmä
Tässä menetelmässä käytämme luettelon ymmärtämistä iteroitaessamme luetteloa ja taulukon indeksointia saadaksemme kohteen taulukosta. Lisäämme kohteet taulukkoon vain, jos taulukon elementin ensimmäinen indeksi vastaa elementin nykyistä indeksiä tai muuten laiminlyö elementin.
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)> |
>
>Lähtö
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] ('The list after removing duplicates :', [1, 5, 3, 6])> Aika monimutkaisuus: O(n^2)
Tilan monimutkaisuus: Päällä)
Poista kaksoiskappaleet luettelosta käyttämällä tai Counter()-menetelmä
Tässä menetelmässä käytämme Counter() -menetelmä tehdäksesi sanakirjan tietystä taulukosta. Hae nyt kaikki avaimet käyttämällä avaimet () menetelmä, joka antaa vain ainutlaatuiset arvot edellisestä luettelosta.
Python 3
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)> |
>
poista angular cli
>Lähtö
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1, 5, 3, 6]>
Aika monimutkaisuus: Päällä)
Tilan monimutkaisuus: Päällä)
Poista kaksoiskappaleet luettelosta käyttämällä numpy ainutlaatuista menetelmää
Tätä menetelmää käytetään, kun luettelo sisältää samantyyppisiä elementtejä, ja sitä käytetään kaksoiskappaleiden poistamiseen luettelosta. Se muuntaa ensin luettelon a nuhjuinen joukko ja käyttää sitten numpy ainutlaatuinen() -menetelmä poistaaksesi kaikki päällekkäiset elementit luettelosta.
Huomautus: Asenna numpy-moduuli komennolla pip install numpy kaksoiskappale
Python 3
# 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))> |
>
>
Lähtö
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1 3 5 6]>
Aika monimutkaisuus: Päällä)
Tilan monimutkaisuus: Päällä)
Panda-tietokehyksen käyttö
The pandas.DataFrame.drop_duplicates() menetelmää voidaan käyttää myös kaksoiskappaleiden poistamiseen luettelosta. Menetelmä palauttaa uuden DataFramen, jonka kaksoiskappaleet on poistettu, ja alkuperäiset datakehystiedot kehys pysyy muuttumattomana.
Algoritmi:
Luo pandatietokehys luettelosta. Käytä drop_duplicates()-menetelmää DataFramissa ja muunna sitten tuloksena oleva DataFrame luetteloksi.
Python 3
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))> |
>
>
Lähtö:
The original list is : [1, 5, 3, 6, 3, 5, 6, 1] The list after removing duplicates : [1 , 5 , 3, 6]>
Aika monimutkaisuus: Drop_duplicates()-menetelmän aikamonimutkaisuus on O(n log n), koska se lajittelee arvot ennen kaksoiskappaleiden poistamista. Muuntaminen DataFramesta listaksi kestää O(n) aikaa. Siksi tämän menetelmän kokonaisaikamonimutkaisuus on O(n log n).
Avaruuden monimutkaisuus: Tämän menetelmän monimutkaisuus on O(n), koska luodaan uusi DataFrame ja luettelo, joissa kussakin on n elementtiä.