logo

Python | Tri de la liste des listes avec des éléments de liste similaires

Le tri a toujours été une opération clé effectuée pour de nombreuses applications et également comme sous-problème à de nombreux problèmes. De nombreuses variantes et techniques ont été discutées et leurs connaissances peuvent être utiles lors de la programmation. Cet article traite du tri des listes contenant une liste. Discutons de certaines façons dont cela peut être réalisé.

Méthode n°1 : Utilisation de sorted() + compréhension de liste



Dans cette méthode, nous utilisons simplement le raccourci du processus long qui peut être appliqué. La liste est itérée et la sous-liste suivante est triée à l'aide de la fonction sorted triant également la liste interne.

cannelle contre maté

Approche étape par étape :

  1. Nous commençons par initialiser une liste imbriquée test_list contenant deux sous-listes, chacune contenant un nombre différent de listes, chacune contenant deux entiers.
  2. Nous imprimons ensuite la liste originale à l'aide de la fonction print() et de la fonction str() pour convertir la liste en chaîne à des fins d'impression.
  3. Nous utilisons une compréhension de liste avec la fonction sorted() pour trier chaque sous-liste dans test_list en fonction des éléments de chaque sous-liste.
  4. Nous attribuons la liste de listes triée résultante à la variable res.
  5. Enfin, nous imprimons la liste triée résultante en utilisant la fonction print() et la fonction str() pour convertir la liste en chaîne à des fins d'impression.

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

>

>

Sortir :

La liste d'origine : [[[4, 4], [1, 1]], [[3, 3], [2, 2], [5, 5]]] La liste après avoir effectué l'opération de tri : [[[1 , 1], [4, 4]], [[2, 2], [3, 3], [5, 5]]]

Complexité temporelle : O(nlogn)
Espace auxiliaire : O(1)

Méthode n°2 : Utilisation de map() + sorted()

La combinaison des fonctions ci-dessus effectue également une tâche similaire à celle de la méthode ci-dessus, la seule différence étant que la fonction map est utilisée pour étendre la logique de tri à l'ensemble des sous-listes.

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

>

>

Sortir :

La liste d'origine : [[[4, 4], [1, 1]], [[3, 3], [2, 2], [5, 5]]] La liste après avoir effectué l'opération de tri : [[[1 , 1], [4, 4]], [[2, 2], [3, 3], [5, 5]]]

Complexité temporelle : O(n*nlogn), où n est le nombre d'éléments dans la liste test_list.
Espace auxiliaire : O(n), où n est le nombre d'éléments dans la liste test_list.

Méthode 3 : Utilisation de la fonction lambda avec la méthode sort().

Approche:

  1. Initialisez la liste test_list avec des exemples de données.
  2. Imprimez la liste originale à l'aide de la fonction print().
  3. Utilisez la méthode sort() pour trier la liste des listes. Le paramètre key est défini sur une fonction lambda qui trie chaque élément de la liste.
  4. Imprimez la liste triée à l'aide de la fonction print().

Vous trouverez ci-dessous la mise en œuvre de l’approche ci-dessus :

cuillère à café contre cuillère à soupe

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

>

>

Sortir

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

Complexité temporelle : O(n log n), où n est le nombre d'éléments dans la liste.
Espace auxiliaire : O(1), car il n'utilise aucun espace supplémentaire en dehors de la liste d'entrée.

Méthode n°4 : Utilisation de functools.cmp_to_key()

  1. Importez le module functools.
  2. Définissez une fonction de comparaison qui prend deux sous-listes comme arguments et renvoie -1, 0 ou 1 en fonction de leur ordre relatif.
  3. Utilisez la fonction sorted() et la fonction cmp_to_key() de functools pour trier la liste d'origine à l'aide de la fonction de comparaison.

Python3




Kat Timpf soeur

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

>

>

Sortir

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

Complexité temporelle : O(N * M * log(M)), où N est le nombre de sous-listes et M est la longueur de la sous-liste la plus longue.
Espace auxiliaire : O(M) , où M est la longueur de la sous-liste la plus longue, pour l'opération de tri.