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:
- 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.
- 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.
- 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.
- Asignamos la lista ordenada de listas resultante a la variable res.
- 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:
- Inicialice la lista test_list con datos de muestra.
- Imprima la lista original usando la función print().
- 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.
- 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()
- Importe el módulo functools.
- Defina una función de comparación que tome dos sublistas como argumentos y devuelva -1, 0 o 1 según su orden relativo.
- 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.