Sorteren is altijd een belangrijke handeling geweest die voor veel toepassingen wordt uitgevoerd en ook als een subprobleem van veel problemen. Er zijn veel variaties en technieken besproken en de kennis ervan kan nuttig zijn tijdens het programmeren. Dit artikel bespreekt het sorteren van lijsten die een lijst bevatten. Laten we bepaalde manieren bespreken waarop dit kan worden uitgevoerd.
Methode #1: Gesorteerd() + lijstbegrip gebruiken
Bij deze methode gebruiken we slechts de afkorting van het lange proces dat kan worden toegepast. De lijst wordt herhaald en de daaropvolgende sublijst wordt gesorteerd met behulp van de gesorteerde functie, die ook de binnenste lijst sorteert.
hoe het csv-bestand in Java te lezen
Stap bt stapbenadering:
- We beginnen met het initialiseren van een geneste lijst test_list die twee sublijsten bevat, die elk een ander aantal lijsten bevatten, die elk twee gehele getallen bevatten.
- Vervolgens drukken we de originele lijst af met behulp van de print()-functie en de str()-functie om de lijst naar een string te converteren voor afdrukdoeleinden.
- We gebruiken een lijstbegrip met de functie sort() om elke sublijst binnen de test_list te sorteren op basis van de elementen binnen elke sublijst.
- We wijzen de resulterende gesorteerde lijst met lijsten toe aan de variabele res.
- Ten slotte drukken we de resulterende gesorteerde lijst res af met behulp van de print() functie en de str() functie om de lijst naar een string te converteren voor afdrukdoeleinden.
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))> |
>
>Uitgang:
De originele lijst: [[[4, 4], [1, 1]], [[3, 3], [2, 2], [5, 5]]] De lijst na het uitvoeren van de sorteerbewerking: [[[1 , 1], [4, 4]], [[2, 2], [3, 3], [5, 5]]]
Tijdcomplexiteit: O(nlogn)
Hulpruimte: O(1)
Methode #2: gebruik kaart() + gesorteerd()
De combinatie van de bovenstaande functies voert ook een soortgelijke taak uit als de bovenstaande methode, alleen met het verschil dat de kaartfunctie wordt gebruikt om de sorteerlogica uit te breiden naar het geheel van sublijsten.
Python3
converteer in naar string in 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))> |
>
>Uitgang:
De originele lijst: [[[4, 4], [1, 1]], [[3, 3], [2, 2], [5, 5]]] De lijst na het uitvoeren van de sorteerbewerking: [[[1 , 1], [4, 4]], [[2, 2], [3, 3], [5, 5]]]
Tijdcomplexiteit: O(n*nlogn), waarbij n het aantal elementen in de lijst test_list is.
Hulpruimte: O(n), waarbij n het aantal elementen in de lijst test_list is.
Methode 3: De lambda-functie gebruiken met de sort()-methode.
Benadering:
- Initialiseer de lijst test_list met voorbeeldgegevens.
- Druk de originele lijst af met behulp van de print() functie.
- Gebruik de methode sort() om de lijst met lijsten te sorteren. De sleutelparameter is ingesteld op een lambda-functie die elk lijstelement sorteert.
- Druk de gesorteerde lijst af met behulp van de print() functie.
Hieronder vindt u de implementatie van de bovenstaande aanpak:
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))> |
>
>Uitvoer
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]]]>
Tijdcomplexiteit: O(n log n), waarbij n het aantal elementen in de lijst is.
Hulpruimte: O(1), omdat het geen extra ruimte gebruikt, afgezien van de invoerlijst.
Methode #4: functools.cmp_to_key() gebruiken
- Importeer de functools-module.
- Definieer een vergelijkingsfunctie die twee sublijsten als argumenten neemt en -1, 0 of 1 retourneert, afhankelijk van hun relatieve volgorde.
- Gebruik de functie sort() en de functie cmp_to_key() van functools om de originele lijst te sorteren met behulp van de vergelijkingsfunctie.
Python3
sorteer-java samenvoegen
# 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))> |
>
>Uitvoer
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]]]>
Tijdcomplexiteit: O(N * M * log(M)), waarbij N het aantal sublijsten is en M de lengte van de langste sublijst.
Hulpruimte: O(M) , waarbij M de lengte is van de langste sublijst, voor de sorteerbewerking.