Sortować v/s sortowane

Sortować v/s sortowane

Sortowanie to technika zmieniająca elementy lub dane w kolejności rosnącej lub malejącej. W programowaniu Python możemy bardzo łatwo sortować za pomocą metod sort () i sortowanego ().

Metody sortowane () i sort () ułożą elementy w kolejności rosnącej lub malejącej. Nawet oba wykonują te same operacje, ale nadal są różne.

W tych samouczkach użytkownicy muszą mieć podstawowe pomysły na temat listy, krotek i zestawów. Będziemy używać niektórych podstawowych operacji tych struktur danych, aby pokazać wyraźny obraz wbudowanych metod sort () i sortowanego (). I do tego używam Python3, więc jeśli używasz Python2, może być pewna różnica wyjściowa.

Sortowane ():

Składnia funkcji sortowanej () to:

posortowany (iterable, klucz, odwrotność = false)

Zamierzamy zaimplementować sortowanie zarówno danych ciągów, jak i liczb całkowitych za pomocą wbudowanej metody sortowanej ().

Funkcja sortowanego () zaakceptuje iterowalne i zwróci posortowane elementy iteracyjne, które będą domyślnie w kolejności rosnącej. Domyślnie funkcja sortowanego () ułoży elementy w kolejności rosnącej, ponieważ odwrotnie = false.

Sortowanie liczb

W liczbie komórki [4]: Utworzyliśmy numeryczną listę numerów nazwisk.

W liczbie komórki [5]: Nazwaliśmy funkcję sorted () i przekazaliśmy listę numeryczną (liczby). W zamian otrzymaliśmy posortowaną listę, która jest również nową listą. Nowa lista oznacza, że ​​oryginalna lista, którą przekazaliśmy do sortowanego () jako parametr, pozostaje niezmieniony. Z numeru komórki [6] potwierdzamy, że oryginalna lista pozostaje niezmieniona nawet po zastosowaniu sortowanego ().

Funkcja sortowanego () ma następujące właściwości:

  • Funkcja sortowanego () nie trzeba definiować przed użyciem. Możemy to nazwać bezpośrednio, tak jak w powyższym przykładzie (numer komórki [5]).
  • Funkcja sortowanego () zrobi domyślnie ustalenia dotyczące danych wstępnych, jeśli nie przekazamy w to żadnych parametrów.
  • Funkcja sortowana () zwraca nową listę, co oznacza niezmienioną listę oryginalną, jak pokazano w powyższym przykładowym numerze komórki [6].

Możemy również przypisać wyniki sortowane () z powrotem do nowej zmiennej, jak pokazano poniżej:


W liczbie komórki [13]: Utworzyliśmy numeryczną listę numerów nazwisk. Nazwaliśmy funkcję sorted () i przekazaliśmy listę numeryczną (liczby).

Następnie przypisaliśmy wynik funkcji sorted () do nowej zmiennej sort_results do dalszego użycia.

Zastosuj sortowane () na krotkach i zestawach:

Funkcja sortowanego () działa również na krotkach i zestawach w celu sortowania elementów.


W liczbie komórki [15]: Utworzyliśmy krotek (num_tuple) i ustaw (num_sets).

W liczbie komórki [18]: Nazwaliśmy posortowaną funkcję i przypisaliśmy wyniki powrotu do nowych zmiennych (Tuple_Sorted i Set_Sorted). Następnie wydrukowaliśmy wyniki i otrzymaliśmy posortowane dane. Ale wyniki znajdują się w formacie listy, a nie w formacie krotek i zestawów, gdy przekazaliśmy parametry, ponieważ domyślnie posortowane zwraca wyniki w formacie listy. Tak więc, jeśli chcemy uzyskać wyniki w tym samym formacie (zestawy i krotki), musimy użyć odlewu.

W liczbie komórki [22]: Widzimy z wyjścia, teraz powoduje format krotki i ustawiony zgodnie z oczekiwaniami, ponieważ podczas wywoływania do funkcji sortowanej () zastosowaliśmy również operator odlewów, który przekształca listę z powrotem do wymaganego formatu.

Ciąg sortowania

Teraz zastosujemy funkcję sortowanego () na liście ciągów, jak pokazano poniżej. Zobaczysz to przed przekazaniem ciągu do funkcji sortowanej (), używamy metody split (), która domyślna parametr formatu jest przestrzeń (podzielona przez miejsce). Powodem tego jest uzyskanie całego ciągu jako listy, ale podzielenie całego ciągu, gdy przychodzi przestrzeń. Jeśli nie zrobimy tak jak poniżej, cały ciąg zostanie podzielony pod względem postaci i nie otrzyma prawidłowego wyjścia, jak pragniemy.

Tak więc, jeśli nie użyjemy metody split () podczas sortowanego ciągu (), otrzymamy wyniki jak poniżej:

Możesz zobaczyć, że cały ciąg, kiedy przekazaliśmy funkcję sortowaną (), zwraca listę znaków. Teraz wyniki nie są zgodnie z naszymi wymaganiami.

Aby przezwyciężyć ten problem, musimy podzielić () ciąg, jak pokazano poniżej. Dzielimy tu sznur z przestrzenią, ponieważ mamy główny charakter przestrzeni, który oddziela sznurki. Ale to nie jest ograniczenie; Możesz użyć dowolnego formattera w metodzie split () zgodnie z pozycjami łańcuchowymi.

W liczbie komórki [27]: Zainicjujemy ciąg, a następnie dzielimy ten ciąg z przestrzeni jako podzielony formatter. I otrzymujemy listę każdego ciągu całego ciągu zamiast znaków ciągu.

W liczbie komórki [28]: Nazywamy funkcję sorted () i przekazujemy, że str_value_list jako parametr do tego.

W liczbie komórki [29]: W końcu drukujemy sortowaną listę ciągów zwraca się według funkcji sortowanej (). W komórce [30] ponownie drukujemy oryginalną listę, aby potwierdzić, że oryginalna lista nie jest zmieniana przez funkcję sorted ().

Sortowanie za pomocą odwrotnej = prawdziwy argument

Teraz zmienimy domyślny parametr funkcji sortowanego () z false na true. Po zmianie wartości odwrotnej z fałszu na true, funkcja sortowanego () sortuje dane w kolejności malejącej.

W komórce [3]: Utworzyliśmy listę liczb całkowitych numerów nazwisk.

W komórce [4]: Przekazujemy listę (liczby) do funkcji sorted (). Wraz z tym zmieniliśmy odwrotność = prawda. Z powodu odwrotnej = true, otrzymaliśmy dane w kolejności malejącej.

W komórce [5]: Drukujemy oryginalną listę, aby potwierdzić, że nie zmieniła oryginalnej listy.

Sortowanie obudowy łańcucha ma znaczenie

Python używa kodu Unicode do określenia pierwszego znaku łańcucha przed sortowaniem kolejności malejącej lub rosnącej. Tak, że funkcja sortowanego () będzie traktowała małe znaki obudowy i kapitału inaczej, mimo że to samo, jak A lub wartość, będzie inna, jak pokazano poniżej:


Aby to zrozumieć, ponownie piszemy mały program sortowania ciągów.


W komórce [6]: Utworzyliśmy listę nazw z całą pierwszą kapitałem postaci.

W komórce [7]: Kiedy sortowaliśmy nazwy_case, otrzymaliśmy pożądany wynik.

W komórce [8]: Kiedy zmieniamy pierwszą postać Harmana na Harman i Apple na Apple i ponownie sortuje listę, otrzymaliśmy nieoczekiwany wynik, ponieważ wynik pokazuje, że sznurek Apple na trzecie indeks listy. Odbywa się to z powodu kodu Unicode, którego Python użył do sprawdzenia swojej wartości.

W komórce [11]: Drukujemy pierwszą nazwę postaci z ich wartością.

sortowane () za pomocą parametru kluczowego

Funkcja sorted () ma mocniejszą funkcję, która jest kluczowym argumentem. Ten klucz oczekuje funkcji, a każdy element na liście musi przejść do tego klucza przed wygenerowaniem ostatecznego wyjścia.

Możemy to zrozumieć z tego podstawowego przykładu sortowania ciągów. W poprzednim stwierdziliśmy, że Python zastosował metodę Unicode do określenia pierwszej wartości znaku, a następnie, zgodnie z tym, sortuje to elementy. Możemy to przezwyciężyć, używając kluczowych funkcji, a nasz wynik będzie zgodnie z naszymi oczekiwaniami.


Teraz widzimy, że z wyniku, nawet jeśli pierwsza postać jest niewielka lub kapitał, uzyskujemy wyniki zgodnie z naszymi oczekiwaniami, ponieważ klucz, który przekazujemy każdy element na małą sprawę przed przejściem do sortowania. Mimo to oryginalna wartość zostanie wydrukowana, jak widzieliśmy.

Sort () funkcja

Składnia funkcji sort () jest

lista.sort (klucz, odwrotny = false)

Główną różnicą między funkcją sort () i sortowanego () jest:


W komórce [18], Widzimy, że metoda sort () jest częścią listy, a nie wbudowaną metodą. Metoda sort () nie działa również z krotkami i zestawami. Metoda sort () działa tylko z listą, ponieważ jest częścią klasy listy.

Utworzyliśmy nową listę i nazywaliśmy metodę sort (), gdy nazywaliśmy sortowane (), ale otrzymaliśmy błąd, ponieważ, jak powiedzieliśmy wcześniej, nie jest to wbudowana metoda.

Możemy to wywołać tylko za pomocą listy z operatorem kropkowym, jak pokazano powyżej w składni.

Więc ponownie wywołujemy metodę sort () z listą (numery), a nasze dane zostały ułożone w kolejności rosnące. Ale kiedy drukujemy oryginalną listę w numerze komórki [28], stwierdziliśmy, że oryginalna lista również zmieniła.

Wniosek:

Zbadaliśmy więc metody sort () i sortowań (). Widzieliśmy również, że metoda sort () nie jest wbudowaną metodą, ponieważ jest to klasa listy i może uzyskać dostęp do obiektu listy. Ale metoda sortowanego () jest wbudowana i może również pracować z krotką i zestawami.