logo

Python | Sortere liste over lister med lignende listeelementer

Sortering har alltid vært en nøkkeloperasjon som utføres for mange applikasjoner og også som et underproblem til mange problemer. Mange varianter og teknikker har blitt diskutert og kunnskapen deres kan være nyttig å ha under programmering. Denne artikkelen diskuterer sorteringen av lister som inneholder en liste. La oss diskutere visse måter dette kan utføres på.

Metode #1: Bruke sortert() + listeforståelse



I denne metoden bruker vi bare stenografien til den lange prosessen som kan brukes. Listen itereres og den påfølgende underlisten sorteres ved å bruke den sorterte funksjonen som også sorterer den indre listen.

all caps snarvei excel

Trinn bt trinn tilnærming:

  1. Vi starter med å initialisere en nestet liste test_list som inneholder to underlister, som hver inneholder et annet antall lister, som hver inneholder to heltall.
  2. Vi skriver deretter ut den opprinnelige listen ved å bruke print()-funksjonen og str()-funksjonen for å konvertere listen til en streng for utskriftsformål.
  3. Vi bruker en listeforståelse med sorted()-funksjonen for å sortere hver underliste i test_list basert på elementene i hver underliste.
  4. Vi tildeler den resulterende sorterte listen med lister til variabelen res.
  5. Til slutt skriver vi ut den resulterende sorterte listen res ved å bruke print()-funksjonen og str()-funksjonen for å konvertere listen til en streng for utskriftsformå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))>

>

>

Utgang:

Den opprinnelige listen: [[[4, 4], [1, 1]], [[3, 3], [2, 2], [5, 5]]] Listen etter å ha utført sorteringsoperasjonen: [[[1 , 1], [4, 4]], [[2, 2], [3, 3], [5, 5]]]

Tidskompleksitet: O(nlogn)
Hjelpeområde: O(1)

Metode #2: Bruk av map() + sorted()

Kombinasjonen av funksjonene ovenfor utfører også en lignende oppgave som metoden ovenfor, bare forskjellen er at kartfunksjonen brukes til å utvide sorteringslogikken til hele underlistene.

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))>

>

>

Utgang:

Den opprinnelige listen: [[[4, 4], [1, 1]], [[3, 3], [2, 2], [5, 5]]] Listen etter å ha utført sorteringsoperasjonen: [[[1 , 1], [4, 4]], [[2, 2], [3, 3], [5, 5]]]

hvordan få tilgang til icloud-bilder

Tidskompleksitet: O(n*nlogn), der n er antall elementer i listen test_list.
Auxiliary Space: O(n), der n er antall elementer i listen test_list.

Metode 3: Bruke lambda-funksjonen med sort()-metoden.

Nærme seg:

  1. Initialiser listen test_list med eksempeldata.
  2. Skriv ut den originale listen ved å bruke print()-funksjonen.
  3. Bruk sort()-metoden for å sortere listen over lister. Nøkkelparameteren er satt til en lambda-funksjon som sorterer hvert listeelement.
  4. Skriv ut den sorterte listen ved å bruke print()-funksjonen.

Nedenfor er implementeringen av tilnærmingen ovenfor:

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))>

>

>

Produksjon

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), der n er antall elementer i listen.
Ekstra plass: O(1), siden den ikke bruker noe ekstra mellomrom bortsett fra inndatalisten.

Metode #4: Bruke functools.cmp_to_key()

  1. Importer funksjonsverktøy-modulen.
  2. Definer en sammenligningsfunksjon som tar to underlister som argumenter og returnerer -1, 0 eller 1 avhengig av deres relative rekkefølge.
  3. Bruk sortert()-funksjonen og cmp_to_key()-funksjonen fra functools for å sortere den opprinnelige listen ved å bruke sammenligningsfunksjonen.

Python3




Last ned turbo c++

# 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))>

>

>

Produksjon

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)), der N er antall underlister og M er lengden på den lengste underlisten.
Hjelperom: O(M) , hvor M er lengden på den lengste underlisten, for sorteringsoperasjonen.