L'ordenació sempre ha estat una operació clau que es realitza per a moltes aplicacions i també com a subproblema de molts problemes. S'han discutit moltes variacions i tècniques i els seus coneixements poden ser útils per tenir-los durant la programació. Aquest article tracta sobre l'ordenació de llistes que contenen una llista. Parlem de certes maneres de fer-ho.
Mètode #1: Ús de la comprensió ordenada () + llista
En aquest mètode, només fem servir l'abreviatura del procés llarg que es pot aplicar. La llista s'itera i la subllista posterior s'ordena mitjançant la funció ordenada que ordena també la llista interna.
diferència entre programa i guió
Enfocament pas bt pas:
- Comencem inicialitzant una llista imbricada test_list que conté dues subllistes, cadascuna conté un nombre diferent de llistes, cadascuna de les quals conté dos nombres enters.
- A continuació, imprimim la llista original mitjançant la funció print() i la funció str() per convertir la llista en una cadena amb finalitats d'impressió.
- Utilitzem una comprensió de llista amb la funció sortd() per ordenar cada subllista dins de la llista_test en funció dels elements de cada subllista.
- Assignem la llista ordenada resultant de llistes a la variable res.
- Finalment, imprimim la llista ordenada resultant res utilitzant la funció print() i la funció str() per convertir la llista en una cadena amb finalitats d'impressió.
Python 3
# 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))> |
>
>Sortida:
La llista original: [[[4, 4], [1, 1]], [[3, 3], [2, 2], [5, 5]]] La llista després de realitzar l'operació d'ordenació: [[[1 , 1], [4, 4]], [[2, 2], [3, 3], [5, 5]]]
Complexitat temporal: O(nlogn)
Espai auxiliar: O(1)
Mètode núm. 2: utilitzant map() + sorted()
La combinació de les funcions anteriors també realitza una tasca similar al mètode anterior, només amb la diferència que la funció de mapa s'utilitza per estendre la lògica d'ordenació a la totalitat de les subllistes.
Python 3
# 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))> |
>
>
cadena separada en javaSortida:
La llista original: [[[4, 4], [1, 1]], [[3, 3], [2, 2], [5, 5]]] La llista després de realitzar l'operació d'ordenació: [[[1 , 1], [4, 4]], [[2, 2], [3, 3], [5, 5]]]
Complexitat temporal: O(n*nlogn), on n és el nombre d'elements de la llista llista_test.
Espai auxiliar: O(n), on n és el nombre d'elements de la llista llista_test.
Mètode 3: utilitzant la funció lambda amb el mètode sort().
Enfocament:
- Inicieu la llista test_list amb dades de mostra.
- Imprimiu la llista original mitjançant la funció print().
- Utilitzeu el mètode sort() per ordenar la llista de llistes. El paràmetre clau s'estableix en una funció lambda que ordena cada element de la llista.
- Imprimiu la llista ordenada mitjançant la funció print().
A continuació es mostra la implementació de l'enfocament anterior:
Python 3
# 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))> |
>
>Sortida
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]]]>
Complexitat temporal: O(n log n), on n és el nombre d'elements de la llista.
Espai auxiliar: O(1), ja que no utilitza cap espai addicional a part de la llista d'entrada.
Mètode 4: utilitzant functools.cmp_to_key()
- Importa el mòdul functools.
- Definiu una funció de comparació que prengui dues subllistes com a arguments i retorni -1, 0 o 1 en funció del seu ordre relatiu.
- Utilitzeu la funció sorted() i la funció cmp_to_key() de functools per ordenar la llista original mitjançant la funció de comparació.
Python 3
germans kylie jenner
# 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))> |
>
>Sortida
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]]]>
Complexitat temporal: O(N * M * log(M)), on N és el nombre de subllistes i M és la longitud de la subllista més llarga.
Espai auxiliar: O(M) , on M és la longitud de la subllista més llarga, per a l'operació d'ordenació.