logo

Pythona | Sortowanie list list z podobnymi elementami listy

Sortowanie zawsze było kluczową operacją wykonywaną w wielu zastosowaniach, a także stanowiło podproblem wielu problemów. Omówiono wiele odmian i technik, a ich wiedza może być przydatna podczas programowania. W tym artykule omówiono sortowanie list zawierających listę. Omówmy pewne sposoby, w jakie można to zrobić.

Metoda nr 1: Użycie sorted() + zrozumienie listy



W tej metodzie używamy po prostu skrótu długiego procesu, który można zastosować. Lista jest iterowana, a kolejna podlista jest sortowana przy użyciu funkcji sorted sortującej również listę wewnętrzną.

prime bez kodu w Javie

Krok po kroku:

  1. Zaczynamy od zainicjowania zagnieżdżonej listy test_list zawierającej dwie podlisty, z których każda zawiera inną liczbę list, z których każda zawiera dwie liczby całkowite.
  2. Następnie drukujemy oryginalną listę za pomocą funkcji print() i str(), aby przekonwertować listę na ciąg znaków do celów drukowania.
  3. Używamy rozumienia list z funkcją sorted() do sortowania każdej podlisty w ramach test_list na podstawie elementów w każdej podliście.
  4. Wynikową posortowaną listę list przypisujemy do zmiennej res.
  5. Na koniec drukujemy wynikową posortowaną listę res, używając funkcji print() i funkcji str(), aby przekonwertować listę na ciąg znaków do celów drukowania.

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

>

>

Wyjście :

Oryginalna lista: [[[4, 4], [1, 1]], [[3, 3], [2, 2], [5, 5]]] Lista po wykonaniu operacji sortowania: [[[1 , 1], [4, 4]], [[2, 2], [3, 3], [5, 5]]]

Złożoność czasowa: O(nlogn)
Przestrzeń pomocnicza: O(1)

Metoda nr 2: Używanie map() + sorted()

Kombinacja powyższych funkcji również wykonuje podobne zadanie jak powyższa metoda, z tą tylko różnicą, że funkcja map służy do rozszerzenia logiki sortowania na całe podlisty.

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

>

>

Wyjście :

Oryginalna lista: [[[4, 4], [1, 1]], [[3, 3], [2, 2], [5, 5]]] Lista po wykonaniu operacji sortowania: [[[1 , 1], [4, 4]], [[2, 2], [3, 3], [5, 5]]]

Złożoność czasowa: O(n*nlogn), gdzie n jest liczbą elementów na liście lista_testowa.
Przestrzeń pomocnicza: O(n), gdzie n jest liczbą elementów na liście lista_testowa.

Metoda 3: Użycie funkcji lambda z metodą sort().

Zbliżać się:

  1. Zainicjuj listę test_list przykładowymi danymi.
  2. Wydrukuj oryginalną listę za pomocą funkcji print().
  3. Aby posortować listę list, użyj metody sort(). Parametr key jest ustawiony na funkcję lambda, która sortuje każdy element listy.
  4. Wydrukuj posortowaną listę za pomocą funkcji print().

Poniżej implementacja powyższego podejścia:

łyżeczka vs łyżka

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

>

>

Wyjście

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

Złożoność czasowa: O(n log n), gdzie n jest liczbą elementów na liście.
Przestrzeń pomocnicza: O(1), ponieważ nie zajmuje dodatkowej przestrzeni poza listą wejściową.

Metoda nr 4: Używanie functools.cmp_to_key()

  1. Zaimportuj moduł functools.
  2. Zdefiniuj funkcję porównawczą, która przyjmuje dwie podlisty jako argumenty i zwraca -1, 0 lub 1 w zależności od ich względnej kolejności.
  3. Użyj funkcji sorted() i cmp_to_key() z functools, aby posortować oryginalną listę za pomocą funkcji porównania.

Python3




mecz_preg

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

>

>

Wyjście

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

Złożoność czasowa: O(N * M * log(M)), gdzie N to liczba podlist, a M to długość najdłuższej podlisty.
Przestrzeń pomocnicza: O(M) , gdzie M jest długością najdłuższej podlisty dla operacji sortowania.