Razvrščanje je bilo vedno ključna operacija, ki se izvaja za številne aplikacije in tudi kot podproblem za številne težave. Razpravljali so o številnih različicah in tehnikah in njihovo znanje je lahko koristno imeti med programiranjem. Ta članek obravnava razvrščanje seznamov, ki vsebujejo seznam. Razpravljajmo o nekaterih načinih, na katere je to mogoče izvesti.
Metoda #1 : Uporaba sorted() + razumevanje seznama
Pri tej metodi uporabljamo samo kratico dolgega postopka, ki ga je mogoče uporabiti. Seznam se ponavlja in naslednji podseznam je razvrščen z uporabo sortirane funkcije, ki razvršča tudi notranji seznam.
prednosti instagrama za osebno uporabo
Korak bt korak korak:
- Začnemo z inicializacijo ugnezdenega seznama test_list, ki vsebuje dva podseznama, od katerih vsak vsebuje različno število seznamov, od katerih vsak vsebuje dve celi števili.
- Nato natisnemo izvirni seznam s funkcijo print() in funkcijo str(), da pretvorimo seznam v niz za namene tiskanja.
- Uporabljamo razumevanje seznama s funkcijo sorted(), da razvrstimo vsak podseznam znotraj test_list na podlagi elementov znotraj vsakega podseznama.
- Dobljeni razvrščeni seznam seznamov priredimo spremenljivki res.
- Na koncu natisnemo dobljeni razvrščeni seznam res s funkcijo print() in funkcijo str(), da pretvorimo seznam v niz za namene tiskanja.
Python3
# 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))> |
>
>Izhod:
Izvirni seznam: [[[4, 4], [1, 1]], [[3, 3], [2, 2], [5, 5]]] Seznam po izvedbi operacije razvrščanja: [[[1 , 1], [4, 4]], [[2, 2], [3, 3], [5, 5]]]
Časovna zahtevnost: O(nlogn)
Pomožni prostor: O(1)
Metoda št. 2: Uporaba map() + sorted()
Kombinacija zgornjih funkcij prav tako opravlja podobno nalogo kot zgornja metoda, le da se funkcija zemljevida uporablja za razširitev logike razvrščanja na celotne podsezname.
Python3
# 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))> |
>
>Izhod:
Izvirni seznam: [[[4, 4], [1, 1]], [[3, 3], [2, 2], [5, 5]]] Seznam po izvedbi operacije razvrščanja: [[[1 , 1], [4, 4]], [[2, 2], [3, 3], [5, 5]]]
Časovna kompleksnost: O(n*nlogn), kjer je n število elementov na seznamu test_list.
Pomožni prostor: O(n), kjer je n število elementov na seznamu test_list.
3. način: Uporaba funkcije lambda z metodo sort().
Pristop:
- Inicializirajte seznam test_list z vzorčnimi podatki.
- Natisnite izvirni seznam s funkcijo print().
- Za razvrščanje seznama seznamov uporabite metodo sort(). Ključni parameter je nastavljen na lambda funkcijo, ki razvrsti vsak element seznama.
- Natisnite razvrščeni seznam s funkcijo print().
Spodaj je izvedba zgornjega pristopa:
Python3
ogrodje zbirk java
# 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))> |
>
>Izhod
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]]]>
Časovna zahtevnost: O(n log n), kjer je n število elementov na seznamu.
Pomožni prostor: O(1), saj ne uporablja nobenega dodatnega prostora razen vnosnega seznama.
Metoda št. 4: Uporaba functools.cmp_to_key()
- Uvozite modul functools.
- Definirajte primerjalno funkcijo, ki sprejme dva podseznama kot argumenta in vrne -1, 0 ali 1, odvisno od njunega relativnega vrstnega reda.
- Uporabite funkcijo sorted() in cmp_to_key() iz functools za razvrščanje prvotnega seznama s primerjalno funkcijo.
Python3
c logično
# 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)>>sorted>(list2):> >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))> |
>
>Izhod
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]]]>
Časovna kompleksnost: O(N * M * log(M)), kjer je N število podseznamov in M dolžina najdaljšega podseznama.
Pomožni prostor: O(M) , kjer je M dolžina najdaljšega podseznama, za operacijo razvrščanja.