Sortering har alltid varit en nyckeloperation som utförs för många applikationer och även som ett delproblem till många problem. Många varianter och tekniker har diskuterats och deras kunskaper kan vara användbara att ha under programmering. Den här artikeln diskuterar sorteringen av listor som innehåller en lista. Låt oss diskutera vissa sätt på vilka detta kan utföras.
Metod #1: Använder sorterad() + listförståelse
I denna metod använder vi bara förkortningen av den långa processen som kan tillämpas. Listan itereras och den efterföljande underlistan sorteras med hjälp av den sorterade funktionen som också sorterar den inre listan.
gimp export som jpg
Steg bt steg tillvägagångssätt:
- Vi börjar med att initiera en kapslad lista test_list som innehåller två underlistor, som var och en innehåller olika antal listor, som var och en innehåller två heltal.
- Vi skriver sedan ut den ursprungliga listan med funktionen print() och funktionen str() för att konvertera listan till en sträng för utskriftsändamål.
- Vi använder en listförståelse med funktionen sorted() för att sortera varje underlista i test_listan baserat på elementen i varje underlista.
- Vi tilldelar den resulterande sorterade listan med listor till variabeln res.
- Slutligen skriver vi ut den resulterande sorterade listan res med funktionen print() och funktionen str() för att konvertera listan till en sträng för utskriftsändamål.
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))> |
>
>Utgång:
Den ursprungliga listan: [[[4, 4], [1, 1]], [[3, 3], [2, 2], [5, 5]]] Listan efter att ha utfört sorteringsoperationen: [[[1 , 1], [4, 4]], [[2, 2], [3, 3], [5, 5]]]
Tidskomplexitet: O(nlogn)
Hjälputrymme: O(1)
Metod #2: Använd map() + sorted()
Kombinationen av ovanstående funktioner utför också en liknande uppgift som metoden ovan, bara skillnaden är att kartfunktionen används för att utöka sorteringslogiken till hela underlistorna.
Python3
samling java
# 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))> |
>
>Utgång:
Den ursprungliga listan: [[[4, 4], [1, 1]], [[3, 3], [2, 2], [5, 5]]] Listan efter att ha utfört sorteringsoperationen: [[[1 , 1], [4, 4]], [[2, 2], [3, 3], [5, 5]]]
Tidskomplexitet: O(n*nlogn), där n är antalet element i listan test_list.
Auxiliary Space: O(n), där n är antalet element i listan test_list.
Metod 3: Använda lambda-funktionen med sort()-metoden.
Närma sig:
- Initiera listan test_list med exempeldata.
- Skriv ut originallistan med funktionen print().
- Använd metoden sort() för att sortera listan med listor. Nyckelparametern är inställd på en lambdafunktion som sorterar varje listelement.
- Skriv ut den sorterade listan med funktionen print().
Nedan är implementeringen av ovanstående tillvägagångssätt:
Python3
# 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))> |
>
>Produktion
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]]]>
Tidskomplexitet: O(n log n), där n är antalet element i listan.
Extra utrymme: O(1), eftersom den inte använder något extra utrymme förutom inmatningslistan.
Metod #4: Använda functools.cmp_to_key()
- Importera funktionsverktygsmodulen.
- Definiera en jämförelsefunktion som tar två underlistor som argument och returnerar -1, 0 eller 1 beroende på deras relativa ordning.
- Använd sorted()-funktionen och cmp_to_key()-funktionen från functools för att sortera den ursprungliga listan med jämförelsefunktionen.
Python3
dateformat.format java
# 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))> |
>
>Produktion
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]]]>
Tidskomplexitet: O(N * M * log(M)), där N är antalet underlistor och M är längden på den längsta underlistan.
Hjälputrymme: O(M) , där M är längden på den längsta underlistan, för sorteringsoperationen.