logo

Pitón | Ordenar lista de listas con elementos de lista similares

La clasificación siempre ha sido una operación clave que se realiza para muchas aplicaciones y también como un subproblema de muchos problemas. Se han discutido muchas variaciones y técnicas y puede ser útil tener su conocimiento durante la programación. Este artículo analiza la clasificación de listas que contienen una lista. Analicemos ciertas formas en que esto se puede realizar.

° 1: uso de sorted() + comprensión de listas



En este método, simplemente utilizamos la abreviatura del proceso largo que se puede aplicar. La lista se itera y la sublista posterior se ordena utilizando la función ordenada que ordena también la lista interna.

algoritmo de programación por turnos

Enfoque paso a paso:

  1. Comenzamos inicializando una lista anidada test_list que contiene dos sublistas, cada una con un número diferente de listas, cada una de las cuales contiene dos números enteros.
  2. Luego imprimimos la lista original usando la función print() y la función str() para convertir la lista en una cadena para fines de impresión.
  3. Usamos una lista por comprensión con la función sorted() para ordenar cada sublista dentro de test_list en función de los elementos dentro de cada sublista.
  4. Asignamos la lista ordenada de listas resultante a la variable res.
  5. Finalmente, imprimimos la lista ordenada resultante res usando la función print() y la función str() para convertir la lista en una cadena con fines de impresión.

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

>

>

Producción :

La lista original: [[[4, 4], [1, 1]], [[3, 3], [2, 2], [5, 5]]] La lista después de realizar la operación de clasificación: [[[1 , 1], [4, 4]], [[2, 2], [3, 3], [5, 5]]]

Complejidad del tiempo: O (nlogn)
Espacio auxiliar: O(1)

Método #2: Usar map() + sorted()

La combinación de las funciones anteriores también realiza una tarea similar a la del método anterior, con la única diferencia de que la función de mapa se usa para extender la lógica de clasificación a todas las sublistas.

Python3




puntero en c
# 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))>

>

>

Producción :

La lista original: [[[4, 4], [1, 1]], [[3, 3], [2, 2], [5, 5]]] La lista después de realizar la operación de clasificación: [[[1 , 1], [4, 4]], [[2, 2], [3, 3], [5, 5]]]

Complejidad del tiempo: O (n*nlogn), donde n es el número de elementos en la lista test_list.
Espacio auxiliar: O (n), donde n es el número de elementos en la lista test_list.

Método 3: usar la función lambda con el método sort().

Acercarse:

  1. Inicialice la lista test_list con datos de muestra.
  2. Imprima la lista original usando la función print().
  3. Utilice el método sort() para ordenar la lista de listas. El parámetro clave se establece en una función lambda que ordena cada elemento de la lista.
  4. Imprima la lista ordenada usando la función print().

A continuación se muestra la implementación del enfoque anterior:

Python3




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

>

>

Producción

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

Complejidad del tiempo: O (n log n), donde n es el número de elementos de la lista.
Espacio auxiliar: O(1), ya que no utiliza ningún espacio adicional aparte de la lista de entrada.

Método #4: Usar functools.cmp_to_key()

  1. Importe el módulo functools.
  2. Defina una función de comparación que tome dos sublistas como argumentos y devuelva -1, 0 o 1 según su orden relativo.
  3. Utilice la función sorted() y la función cmp_to_key() de functools para ordenar la lista original usando la función de comparación.

Python3




flotando en css

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

>

>

Producción

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

Complejidad del tiempo: O(N * M * log(M)), donde N es el número de sublistas y M es la longitud de la sublista más larga.
Espacio auxiliar: O(M) , donde M es la longitud de la sublista más larga, para la operación de clasificación.