logo

Python | Llista d'ordenació de llistes amb elements de llista similars

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:

  1. 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.
  2. 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ó.
  3. 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.
  4. Assignem la llista ordenada resultant de llistes a la variable res.
  5. 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 java
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(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:

  1. Inicieu la llista test_list amb dades de mostra.
  2. Imprimiu la llista original mitjançant la funció print().
  3. 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.
  4. 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()

  1. Importa el mòdul functools.
  2. Definiu una funció de comparació que prengui dues subllistes com a arguments i retorni -1, 0 o 1 en funció del seu ordre relatiu.
  3. 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ó.