logo

Python | Sarakstu sarakstu kārtošana ar līdzīgiem saraksta elementiem

Kārtošana vienmēr ir bijusi galvenā darbība, kas tiek veikta daudzām lietojumprogrammām, kā arī kā daudzu problēmu apakšproblēma. Ir apspriestas daudzas variācijas un metodes, un to zināšanas var būt noderīgas programmēšanas laikā. Šajā rakstā ir aplūkota sarakstu, kuros ir saraksts, kārtošana. Apspriedīsim dažus veidus, kā to var veikt.

1. metode: Sorted() + saraksta izpratnes izmantošana



Šajā metodē mēs vienkārši izmantojam garā procesa saīsinājumu, ko var pielietot. Saraksts tiek atkārtots un nākamais apakšsaraksts tiek kārtots, izmantojot šķirošanas funkciju, sakārtojot arī iekšējo sarakstu.

linux piparmētru kanēlis vs mate

Step bt step pieeja:

  1. Mēs sākam, inicializējot ligzdotu sarakstu test_list, kas satur divus apakšsarakstus, no kuriem katrs satur atšķirīgu sarakstu skaitu, no kuriem katrs satur divus veselus skaitļus.
  2. Pēc tam mēs izdrukājam sākotnējo sarakstu, izmantojot funkciju print() un funkciju str(), lai sarakstu pārveidotu par virkni drukāšanas nolūkos.
  3. Mēs izmantojam saraksta izpratni ar funkciju sorted(), lai kārtotu katru apakšsarakstu test_list, pamatojoties uz elementiem katrā apakšsarakstā.
  4. Mēs piešķiram iegūto sakārtoto sarakstu sarakstu mainīgajam res.
  5. Visbeidzot, mēs izdrukājam iegūto sakārtoto sarakstu res, izmantojot funkciju print () un funkciju str (), lai pārvērstu sarakstu par virkni drukāšanas nolūkos.

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

>

>

Izvade:

Sākotnējais saraksts: [[[4, 4], [1, 1]], [[3, 3], [2, 2], [5, 5]]] Saraksts pēc kārtošanas darbības veikšanas: [[[1 , 1], [4, 4]], [[2, 2], [3, 3], [5, 5]]]

Laika sarežģītība: O (nlogn)
Palīgtelpa: O(1)

2. metode: kartes () + sakārtotas () izmantošana

Iepriekš minēto funkciju kombinācija arī veic līdzīgu uzdevumu kā iepriekš minētā metode, tikai atšķirība ir tāda, ka kartes funkcija tiek izmantota, lai paplašinātu kārtošanas loģiku uz visiem apakšsarakstiem.

Python3




vakariņas pret vakariņām
# 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))>

>

>

Izvade:

Sākotnējais saraksts: [[[4, 4], [1, 1]], [[3, 3], [2, 2], [5, 5]]] Saraksts pēc kārtošanas darbības veikšanas: [[[1 , 1], [4, 4]], [[2, 2], [3, 3], [5, 5]]]

Laika sarežģītība: O(n*nlogn), kur n ir elementu skaits sarakstā test_list.
Papildtelpa: O(n), kur n ir elementu skaits sarakstā test_list.

3. metode: lambda funkcijas izmantošana ar sort() metodi.

Pieeja:

  1. Inicializējiet sarakstu test_list ar datu paraugiem.
  2. Drukājiet sākotnējo sarakstu, izmantojot funkciju print().
  3. Izmantojiet sort() metodi, lai kārtotu sarakstu sarakstu. Galvenais parametrs ir iestatīts uz lambda funkciju, kas kārto katru saraksta elementu.
  4. Drukājiet sakārtoto sarakstu, izmantojot funkciju print().

Tālāk ir aprakstīta iepriekš minētās pieejas īstenošana.

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

>

>

Izvade

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

Laika sarežģītība: O(n log n), kur n ir elementu skaits sarakstā.
Palīgtelpa: O(1), jo tas neizmanto papildu atstarpi, izņemot ievades sarakstu.

4. metode: functools.cmp_to_key() izmantošana

  1. Importējiet functools moduli.
  2. Definējiet salīdzināšanas funkciju, kas izmanto divus apakšsarakstus kā argumentus un atgriež -1, 0 vai 1 atkarībā no to relatīvās secības.
  3. Izmantojiet funkciju sorted() un funkciju cmp_to_key() no functools, lai kārtotu sākotnējo sarakstu, izmantojot salīdzināšanas funkciju.

Python3




nedeterminēti galīgi automāti

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

>

>

Izvade

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

Laika sarežģītība: O(N * M * log(M)), kur N ir apakšsarakstu skaits un M ir garākā apakšsaraksta garums.
Palīgtelpa: O(M) , kur M ir garākā apakšsaraksta garums šķirošanas darbībai.