Lajittelu on aina ollut avaintoiminto, joka suoritetaan monissa sovelluksissa ja myös monien ongelmien osaongelmana. Monista muunnelmista ja tekniikoista on keskusteltu, ja niiden tiedosta voi olla hyötyä ohjelmoinnin aikana. Tässä artikkelissa käsitellään luettelon sisältävien luetteloiden lajittelua. Keskustellaan tietyistä tavoista, joilla tämä voidaan suorittaa.
Tapa #1 : Sorted() + listan ymmärtäminen
Tässä menetelmässä käytämme vain lyhennettä pitkästä prosessista, jota voidaan soveltaa. Lista iteroidaan ja seuraava alilista lajitellaan käyttämällä lajiteltua funktiota, joka lajittelee myös sisäisen listan.
git pull -syntaksi
Vaihe bt askel lähestymistapa:
- Aloitamme alustamalla sisäkkäisen listan test_list, joka sisältää kaksi aliluetteloa, joista jokainen sisältää eri määrän luetteloita, joista jokainen sisältää kaksi kokonaislukua.
- Tulostamme sitten alkuperäisen luettelon käyttämällä print()-funktiota ja str()-funktiota luettelon muuntamiseksi merkkijonoksi tulostusta varten.
- Käytämme listan ymmärtämistä sorted()-funktion kanssa lajitellaksemme jokaisen aliluettelon test_listissa kunkin aliluettelon elementtien perusteella.
- Määritämme tuloksena olevan lajiteltujen luetteloiden luettelon muuttujalle res.
- Lopuksi tulostetaan tuloksena oleva lajiteltu lista res käyttämällä print()-funktiota ja str()-funktiota listan muuntamiseksi merkkijonoksi tulostusta varten.
Python 3
# Python3 code to demonstrate> # Sorting list of lists with similar list elements> # using list comprehension + sorted()> # initializing list> test_list>=> [[[>4>,>4>], [>1>,>1>]], [[>3>,>3>], [>2>,>2>], [>5>,>5>]]]> # printing original list> print>(>'The original list : '> +> str>(test_list))> # using list comprehension + sorted()> # Sorting list of lists with similar list elements> res>=> [>sorted>(idx)>for> idx>in> test_list]> # print result> print>(>'The list after performing sort operation : '> +> str>(res))> |
>
>Lähtö:
Alkuperäinen luettelo : [[[4, 4], [1, 1]], [[3, 3], [2, 2], [5, 5]]] Lista lajittelutoiminnon suorittamisen jälkeen: [[[1 , 1], [4, 4]], [[2, 2], [3, 3], [5, 5]]]
Aika monimutkaisuus: O (nlogn)
Aputila: O(1)
Tapa 2: Käytä karttaa () + lajiteltua ()
Yllä olevien funktioiden yhdistelmä suorittaa myös samanlaisen tehtävän kuin yllä oleva menetelmä, erona on vain se, että karttatoimintoa käytetään lajittelulogiikan laajentamiseen koko aliluetteloon.
Python 3
# Python3 code to demonstrate> # Sorting list of lists with similar list elements> # using map() + sorted()> # initializing list> test_list>=> [[[>4>,>4>], [>1>,>1>]], [[>3>,>3>], [>2>,>2>], [>5>,>5>]]]> # printing original list> print>(>'The original list : '> +> str>(test_list))> # using map() + sorted()> # Sorting list of lists with similar list elements> res>=> list>(>map>(>sorted>, test_list))> # print result> print>(>'The list after performing sort operation : '> +> str>(res))> |
>
>
system.out.printlnLähtö:
Alkuperäinen luettelo : [[[4, 4], [1, 1]], [[3, 3], [2, 2], [5, 5]]] Lista lajittelutoiminnon suorittamisen jälkeen: [[[1 , 1], [4, 4]], [[2, 2], [3, 3], [5, 5]]]
Aika monimutkaisuus: O(n*nlogn), missä n on elementtien lukumäärä listassa testi_lista.
Apuavaruus: O(n), missä n on elementtien lukumäärä listassa testi_lista.
Tapa 3: Lambda-funktion käyttäminen sort()-menetelmän kanssa.
Lähestyä:
- Alusta lista test_list esimerkkitiedoilla.
- Tulosta alkuperäinen luettelo print()-funktiolla.
- Käytä sort()-menetelmää listaluettelon lajitteluun. Avainparametriksi asetetaan lambda-funktio, joka lajittelee jokaisen luettelon elementin.
- Tulosta lajiteltu luettelo print()-funktiolla.
Alla on yllä olevan lähestymistavan toteutus:
Python 3
# Python3 code to demonstrate> # Sorting list of lists with similar list elements> # using lambda function and sort()> # initializing list> test_list>=> [[[>4>,>4>], [>1>,>1>]], [[>3>,>3>], [>2>,>2>], [>5>,>5>]]]> # printing original list> print>(>'The original list : '> +> str>(test_list))> # using lambda function and sort()> # Sorting list of lists with similar list elements> test_list.sort(key>=>lambda> x:>sorted>(x))> # print result> print>(>'The list after performing sort operation : '> +> str>(test_list))> |
>
>Lähtö
The original list : [[[4, 4], [1, 1]], [[3, 3], [2, 2], [5, 5]]] The list after performing sort operation : [[[4, 4], [1, 1]], [[3, 3], [2, 2], [5, 5]]]>
Aika monimutkaisuus: O(n log n), jossa n on listan elementtien lukumäärä.
Aputila: O(1), koska se ei käytä ylimääräistä tilaa syöttöluettelon lisäksi.
Tapa 4: Functools.cmp_to_key()
- Tuo functools-moduuli.
- Määritä vertailufunktio, joka ottaa kaksi aliluetteloa argumenteiksi ja palauttaa arvon -1, 0 tai 1 niiden suhteellisesta järjestyksestä riippuen.
- Käytä lajiteltu()-funktiota ja cmp_to_key()-funktiota functoolsista lajitellaksesi alkuperäisen luettelon vertailufunktiolla.
Python 3
java string.format
# Python3 code to demonstrate> # Sorting list of lists with similar list elements> # using functools.cmp_to_key()> # import functools module> import> functools> # initializing list> test_list>=> [[[>4>,>4>], [>1>,>1>]], [[>3>,>3>], [>2>,>2>], [>5>,>5>]]]> # printing original list> print>(>'The original list : '> +> str>(test_list))> # define comparison function> def> compare_lists(list1, list2):> >if> sorted>(list1) <>sorted>(list2):> >return> ->1> >elif> sorted>(list1)>>> >return> 1> >else>:> >return> 0> # using functools.cmp_to_key() and sorted()> # Sorting list of lists with similar list elements> test_list.sort(key>=>functools.cmp_to_key(compare_lists))> # print result> print>(>'The list after performing sort operation : '> +> str>(test_list))> |
>
>Lähtö
The original list : [[[4, 4], [1, 1]], [[3, 3], [2, 2], [5, 5]]] The list after performing sort operation : [[[4, 4], [1, 1]], [[3, 3], [2, 2], [5, 5]]]>
Aika monimutkaisuus: O(N * M * log(M)), missä N on aliluetteloiden lukumäärä ja M on pisimmän aliluettelon pituus.
Aputila: O(M) , jossa M on lajitteluoperaation pisimmän aliluettelon pituus.