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:
- Î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.
- 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.
- Folosim o listă de înțelegere cu funcția sorted() pentru a sorta fiecare sublistă din test_list pe baza elementelor din fiecare sublistă.
- Atribuim lista sortată rezultată de liste variabilei res.
- Î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:
- Inițializați lista test_list cu date eșantion.
- Imprimați lista originală folosind funcția print().
- 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ă.
- 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()
- Importați modulul functools.
- 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ă.
- 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)>>>> >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.