logo

Python | Sortarea listelor cu elemente de listă similare

Sortarea a fost întotdeauna o operație cheie care este efectuată pentru multe aplicații și, de asemenea, ca o subproblemă pentru multe probleme. Au fost discutate multe variante și tehnici, iar cunoștințele lor pot fi utile în timpul programării. Acest articol discută sortarea listelor care conțin o listă. Să discutăm anumite moduri în care acest lucru poate fi realizat.

Metoda #1: Folosind sortat() + înțelegerea listei



În această metodă, folosim doar prescurtarea procesului lung care poate fi aplicat. Lista este repetată și sublista ulterioară este sortată folosind funcția sortată, sortând și lista interioară.

cod c abs

Pas bt abordare pas:

  1. Începem prin a inițializa o listă imbricată test_list care conține două subliste, fiecare conținând un număr diferit de liste, fiecare dintre ele conținând două numere întregi.
  2. Apoi imprimăm lista originală utilizând funcția print() și funcția str() pentru a converti lista într-un șir în scopuri de imprimare.
  3. Folosim o listă de înțelegere cu funcția sorted() pentru a sorta fiecare sublistă din test_list pe baza elementelor din fiecare sublistă.
  4. Atribuim lista sortată rezultată de liste variabilei res.
  5. În cele din urmă, tipărim lista sortată rezultată folosind funcția print() și funcția str() pentru a converti lista într-un șir în scopuri de tipărire.

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

>

>

Ieșire:

Lista originală: [[[4, 4], [1, 1]], [[3, 3], [2, 2], [5, 5]]] Lista după efectuarea operației de sortare: [[[1 , 1], [4, 4]], [[2, 2], [3, 3], [5, 5]]]

Complexitatea timpului: O(nlogn)
Spațiu auxiliar: O(1)

Metoda #2: Folosind map() + sorted()

Combinația funcțiilor de mai sus îndeplinește, de asemenea, o sarcină similară cu metoda de mai sus, doar diferența fiind că funcția de hartă este utilizată pentru a extinde logica de sortare la toate sublistele.

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

>

>

Ieșire:

Lista originală: [[[4, 4], [1, 1]], [[3, 3], [2, 2], [5, 5]]] Lista după efectuarea operației de sortare: [[[1 , 1], [4, 4]], [[2, 2], [3, 3], [5, 5]]]

Complexitatea timpului: O(n*nlogn), unde n este numărul de elemente din lista list_test.
Spațiu auxiliar: O(n), unde n este numărul de elemente din lista list_test.

Metoda 3: Utilizarea funcției lambda cu metoda sort().

Abordare:

  1. Inițializați lista test_list cu date eșantion.
  2. Imprimați lista originală folosind funcția print().
  3. Utilizați metoda sort() pentru a sorta lista de liste. Parametrul cheie este setat la o funcție lambda care sortează fiecare element din listă.
  4. Imprimați lista sortată folosind funcția print().

Mai jos este implementarea abordării de mai sus:

Python3




clasa șir de caractere 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))>

>

>

Ieșire

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

Complexitatea timpului: O(n log n), unde n este numărul de elemente din listă.
Spatiu auxiliar: O(1), deoarece nu folosește niciun spațiu suplimentar în afară de lista de intrare.

Metoda #4: Utilizarea functools.cmp_to_key()

  1. Importați modulul functools.
  2. Definiți o funcție de comparație care ia două subliste ca argumente și returnează -1, 0 sau 1, în funcție de ordinea lor relativă.
  3. Utilizați funcția sorted() și cmp_to_key() din functools pentru a sorta lista originală folosind funcția de comparare.

Python3




java string.format

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

>

>

Ieșire

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

Complexitatea timpului: O(N * M * log(M)), unde N este numărul de subliste și M este lungimea celei mai lungi subliste.
Spațiu auxiliar: O(M) , unde M este lungimea celei mai lungi subliste, pentru operația de sortare.