logo

Python | Razvrščanje seznamov seznamov s podobnimi elementi seznama

Razvrščanje je bilo vedno ključna operacija, ki se izvaja za številne aplikacije in tudi kot podproblem za številne težave. Razpravljali so o številnih različicah in tehnikah in njihovo znanje je lahko koristno imeti med programiranjem. Ta članek obravnava razvrščanje seznamov, ki vsebujejo seznam. Razpravljajmo o nekaterih načinih, na katere je to mogoče izvesti.

Metoda #1 : Uporaba sorted() + razumevanje seznama



Pri tej metodi uporabljamo samo kratico dolgega postopka, ki ga je mogoče uporabiti. Seznam se ponavlja in naslednji podseznam je razvrščen z uporabo sortirane funkcije, ki razvršča tudi notranji seznam.

prednosti instagrama za osebno uporabo

Korak bt korak korak:

  1. Začnemo z inicializacijo ugnezdenega seznama test_list, ki vsebuje dva podseznama, od katerih vsak vsebuje različno število seznamov, od katerih vsak vsebuje dve celi števili.
  2. Nato natisnemo izvirni seznam s funkcijo print() in funkcijo str(), da pretvorimo seznam v niz za namene tiskanja.
  3. Uporabljamo razumevanje seznama s funkcijo sorted(), da razvrstimo vsak podseznam znotraj test_list na podlagi elementov znotraj vsakega podseznama.
  4. Dobljeni razvrščeni seznam seznamov priredimo spremenljivki res.
  5. Na koncu natisnemo dobljeni razvrščeni seznam res s funkcijo print() in funkcijo str(), da pretvorimo seznam v niz za namene tiskanja.

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

>

>

Izhod:

Izvirni seznam: [[[4, 4], [1, 1]], [[3, 3], [2, 2], [5, 5]]] Seznam po izvedbi operacije razvrščanja: [[[1 , 1], [4, 4]], [[2, 2], [3, 3], [5, 5]]]

Časovna zahtevnost: O(nlogn)
Pomožni prostor: O(1)

Metoda št. 2: Uporaba map() + sorted()

Kombinacija zgornjih funkcij prav tako opravlja podobno nalogo kot zgornja metoda, le da se funkcija zemljevida uporablja za razširitev logike razvrščanja na celotne podsezname.

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

>

>

Izhod:

Izvirni seznam: [[[4, 4], [1, 1]], [[3, 3], [2, 2], [5, 5]]] Seznam po izvedbi operacije razvrščanja: [[[1 , 1], [4, 4]], [[2, 2], [3, 3], [5, 5]]]

Časovna kompleksnost: O(n*nlogn), kjer je n število elementov na seznamu test_list.
Pomožni prostor: O(n), kjer je n število elementov na seznamu test_list.

3. način: Uporaba funkcije lambda z metodo sort().

Pristop:

  1. Inicializirajte seznam test_list z vzorčnimi podatki.
  2. Natisnite izvirni seznam s funkcijo print().
  3. Za razvrščanje seznama seznamov uporabite metodo sort(). Ključni parameter je nastavljen na lambda funkcijo, ki razvrsti vsak element seznama.
  4. Natisnite razvrščeni seznam s funkcijo print().

Spodaj je izvedba zgornjega pristopa:

Python3




ogrodje zbirk java

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

>

>

Izhod

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

Časovna zahtevnost: O(n log n), kjer je n število elementov na seznamu.
Pomožni prostor: O(1), saj ne uporablja nobenega dodatnega prostora razen vnosnega seznama.

Metoda št. 4: Uporaba functools.cmp_to_key()

  1. Uvozite modul functools.
  2. Definirajte primerjalno funkcijo, ki sprejme dva podseznama kot argumenta in vrne -1, 0 ali 1, odvisno od njunega relativnega vrstnega reda.
  3. Uporabite funkcijo sorted() in cmp_to_key() iz functools za razvrščanje prvotnega seznama s primerjalno funkcijo.

Python3




c logično

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

>

>

Izhod

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

Časovna kompleksnost: O(N * M * log(M)), kjer je N število podseznamov in M ​​dolžina najdaljšega podseznama.
Pomožni prostor: O(M) , kjer je M dolžina najdaljšega podseznama, za operacijo razvrščanja.