Sortering har altid været en nøgleoperation, der udføres til mange applikationer og også som et underproblem til mange problemer. Mange variationer og teknikker er blevet diskuteret, og deres viden kan være nyttig at have under programmering. Denne artikel diskuterer sorteringen af lister, der indeholder en liste. Lad os diskutere visse måder, hvorpå dette kan udføres.
Metode #1: Brug af sorteret() + listeforståelse
I denne metode bruger vi blot stenografien af den lange proces, der kan anvendes. Listen itereres, og den efterfølgende underliste sorteres ved hjælp af den sorterede funktion, der også sorterer den indre liste.
verilog altid
Step bt step tilgang:
- Vi starter med at initialisere en indlejret liste test_list indeholdende to underlister, der hver indeholder et forskelligt antal lister, som hver indeholder to heltal.
- Vi udskriver derefter den originale liste ved hjælp af print()-funktionen og str()-funktionen for at konvertere listen til en streng til udskrivningsformål.
- Vi bruger en listeforståelse med funktionen sorted() til at sortere hver underliste i test_listen baseret på elementerne i hver underliste.
- Vi tildeler den resulterende sorterede liste af lister til variablen res.
- Til sidst udskriver vi den resulterende sorterede liste res ved hjælp af print()-funktionen og str()-funktionen til at konvertere listen til en streng til udskrivningsformå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))> |
>
>Output:
Den originale liste: [[[4, 4], [1, 1]], [[3, 3], [2, 2], [5, 5]]] Listen efter udførelse af sorteringsoperation: [[[1 , 1], [4, 4]], [[2, 2], [3, 3], [5, 5]]]
Tidskompleksitet: O(nlogn)
Hjælpeplads: O(1)
Metode #2: Brug af map() + sorted()
Kombinationen af ovenstående funktioner udfører også en lignende opgave som ovenstående metode, blot forskellen er, at kortfunktionen bruges til at udvide sorteringslogikken til hele underlister.
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))> |
>
>Output:
Den originale liste: [[[4, 4], [1, 1]], [[3, 3], [2, 2], [5, 5]]] Listen efter udførelse af sorteringsoperation: [[[1 , 1], [4, 4]], [[2, 2], [3, 3], [5, 5]]]
hvordan man får adgang til icloud-billeder
Tidskompleksitet: O(n*nlogn), hvor n er antallet af elementer i listen test_list.
Auxiliary Space: O(n), hvor n er antallet af elementer i listen test_list.
Metode 3: Brug af lambda-funktionen med sort()-metoden.
Nærme sig:
- Initialiser listen test_list med eksempeldata.
- Udskriv den originale liste ved hjælp af print()-funktionen.
- Brug metoden sort() til at sortere listen over lister. Nøgleparameteren er indstillet til en lambda-funktion, der sorterer hvert listeelement.
- Udskriv den sorterede liste ved hjælp af print()-funktionen.
Nedenfor er implementeringen af ovenstående tilgang:
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]]]>
Tidskompleksitet: O(n log n), hvor n er antallet af elementer på listen.
Hjælpeplads: O(1), da den ikke bruger ekstra plads udover inputlisten.
Metode #4: Brug af functools.cmp_to_key()
- Importer functools-modulet.
- Definer en sammenligningsfunktion, der tager to underlister som argumenter og returnerer -1, 0 eller 1 afhængigt af deres relative rækkefølge.
- Brug funktionen sorted() og funktionen cmp_to_key() fra functools til at sortere den originale liste ved hjælp af sammenligningsfunktionen.
Python3
turbo c++ download
# 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]]]>
Tidskompleksitet: O(N * M * log(M)), hvor N er antallet af underlister og M er længden af den længste underliste.
Hjælpeplads: O(M) , hvor M er længden af den længste underliste, for sorteringsoperationen.