Python Sortowanie listy() z przykładami

Do czego służy metoda sort(). Python?

Funkcja sortowania w Python pomaga posortować listę w kolejności rosnącej lub malejącej. Można go używać do sortowania listy numerycznej, krotek i listy ciągów. Nie tworzy osobnej listy, ale modyfikuje lub sortuje oryginał.

Składnia metody sortowania w Python

Funkcja sortowania ma następującą składnię, jak pokazano poniżej: –

List.sort(key=…, reverse=…)

Funkcja sortowania ma dwa opcjonalne parametry, a mianowicie wymienione poniżej: –

  • Klucz: - Służy do sortowania funkcji w oparciu o kryterium sortowania.
  • Reverse: – przyjmuje wartość jako true lub false. Jeśli ma wartość true, ta funkcja niestandardowa sortuje listę w kolejności malejącej.

Sortowanie listy w kolejności rosnącej przy użyciu metody Sort w Python

In Python, funkcja sortowania domyślnie sortuje dowolną listę w kolejności rosnącej. Lista w porządku rosnącym ma najniższą wartość po lewej stronie, a najwyższa wartość po prawej stronie.

Przykład:

Python kod:

base_list=["Google","Reliance","Guru99","Content","Syntax"]
base_list.sort()
print("the base list after sorting is",base_list)

Wyjście:

the base list after sorting is ['Content', 'Google', 'Guru99', 'Reliance', 'Syntax']

Wyjaśnienie kodu:

  • Powyższa lista jest losowo zdefiniowaną listą ciągów.
  • Funkcja sortowania Python pomaga w sortowaniu losowej listy w kolejności rosnącej, z najniższą długością słowa po lewej stronie i największą długością słowa po prawej stronie.

Sortowanie listy w kolejności malejącej

Funkcja sortowania umożliwia także sortowanie listy w kolejności malejącej. Można to określić jako porządek gdzie lista zaczyna się od najwyższej wartości i kończy na najniższej wartości.

Odwrotnemu parametrowi funkcji sortowania przypisuje się wartość true, aby lista była posortowana w kolejności malejącej.

Spójrzmy na poniższy przykład: –

Python kod:

base_list=[100,600,400,8000,50]
base_list.sort()
print("the base list after sorting is",base_list)
# Reverse Order
base_list.sort(reverse=True)
print("the base list after REVERSE sorting is",base_list)

Wyjście:

the base list after sorting is [50, 100, 400, 600, 8000]
the base list after REVERSE sorting is [8000, 600, 400, 100, 50]

Uwaga: Upewnij się, że przypisanie słowa „True” do parametru odwrotnego zaczyna się od dużej litery „T”, aby uniknąć błędów w czasie wykonywania.

Sortowanie listy krotek przy użyciu metody Sort w Python

Python Krotki to zbiory niezmiennych elementów, które mają uporządkowaną sekwencję. PythonFunkcję sort można wykorzystać do sortowania listy krotek przy użyciu dostosowanej funkcji i wyrażenia lambda.

Dostosowaną funkcję można utworzyć bez nazwy i przedstawić ją za pomocą wyrażenia lambda. Poniżej znajduje się składnia wyrażenia lambda: –

Składnia:

Lambda arguments: expression

Powyższa składnia jest równoważna poniższemu kodowi Pythona:

def name (arguments):
return expression

Oto przykład krotki i dostosowanej funkcji ilustrującej, jak funkcja sortowania z kluczowymi parametrami pomaga sortować elementy w krotce:-

Python kod:

base_list = [('Alto', 2020, 500),('MSFT', 2022, 300),('Guru99', 2019, 1070)]
def get_key(base_list):
    return base_list[2]
base_list.sort(key=get_key,reverse=True)
print("The change in base list is as follows",base_list)

Wyjście:

The change in the base list is as follows [('Guru99', 2019, 1070), ('Alto', 2020, 500), ('MSFT', 2022, 300)]

Wyjaśnienie kodu:

  • Parametr Reverse jest zdefiniowany jako true, aby posortować krotkę w kolejności malejącej.
  • Dostosowana funkcja pobiera drugi element krotki.
  • Jest on używany jako klucz funkcji sortowania.

Spójrzmy na poniższy przykład wykorzystujący wyrażenie lambda:

Python kod:

base_list = [('Alto', 2020, 500),
('MSFT', 2022, 300),
('Guru99', 2019, 1070)]
base_list.sort(key=lambda base_list:base_list[2],reverse=True)
print("The change in base list is as follows",base_list)

Wyjście:

The change in the base list is as follows [('Guru99', 2019, 1070), ('Alto', 2020, 500), ('MSFT', 2022, 300)]

Wyjaśnienie:

  • Wyrażenie lambda pomaga posortować elementy krotki od najwyższej do najniższej, przy czym klucz jest drugim elementem krotki.
  • Program sprawdzi największą wartość drugiego elementu krotki.

Sortowanie elementów listy przy użyciu parametru Len jako klucza

Len to wbudowana funkcja określająca długość elementu. Ustalona długość może zostać wykorzystana do indeksowania w funkcji sortowania. Aby to zrobić, przypisujemy Len do Python parametr kluczowy funkcji sortowania.

Poniższy Python kod ilustruje sposób użycia funkcji Len z funkcją sortowania.

Python Kod:

base_list=["Alto", "Guru99", "Python", "Google", "Java"]
base_list.sort(key=len)
print("The sorted list based on length:",base_list)

Wyjście:

The sorted list based on length: ['Alto', 'Java', 'Guru99', 'Python', 'Google']

Wyjaśnienie kodu:

Sortowanie elementów listy za pomocą Len

  • Długość elementu staje się indeksem dla parametru klucza w celu uporządkowania listy w kolejności rosnącej.
  • Funkcja Len szacuje długość każdego elementu znajdującego się na liście bazowej.
  • Zatrzymuje najkrótszy element po lewej stronie, a największy element po prawej stronie.
  • W tym przypadku słowa alto i java mają długość 4 i są ułożone jako pierwsze na liście, a następnie Guru99 ma długość 6.

Ten przykład ilustruje koncepcję parametru odwrotnego w funkcji sortowania, jak pokazano poniżej: –

Python Kod:

base_list=["Alto", "Guru99", "Python", "Google", "Java"]
base_list.sort(key=len,reverse=True)
print("The sorted list based on length:",base_list)

Wyjście:

The sorted list based on length: ['Guru99', 'Python', 'Google', 'Alto', 'Java']

Sortowanie elementów listy przy użyciu funkcji zdefiniowanej przez użytkownika jako parametru kluczowego

Możesz także użyć funkcji zdefiniowanej przez użytkownika jako kluczowego parametru do sortowania listy. Oto przykład: -

Python Kod:

base_list = [{'Example':'Python','year':1991},{'Example':'Alto','year':2014},{'Example':'Guru99', 'year':1995},
{'Example':'Google','year':1985},{'Example':'Apple','year':2007},{'Example':'Emails','year':2010},]
def get_year(element):
    return element['year']
base_list.sort(key=get_year)
print("The base list after sorting using explicit criteria",base_list)

Wyjście:

The base list after sorting using explicit criteria [{'Example': 'Google', 'year': 1985}, {'Example': 'Python', 'year': 1991}, {'Example': 'Guru99', 'year': 1995}, {'Example': 'Apple', 'year': 2007}, {'Example': 'Emails', 'year': 2010}, {'Example': 'Alto', 'year': 2014}]

Wyjaśnienie kodu:

  • Utworzono funkcję zdefiniowaną przez użytkownika w celu zwrócenia roku
  • Parametr klucza przyjmuje jako kryterium funkcję zdefiniowaną przez użytkownika.
  • Funkcja sortowania uporządkuje listę w kolejności rosnącej na podstawie wartości elementu „rok”.

Różnica między metodą sortowania a metodą sortowaną w Python

Zanim podsumujemy różnice, zapoznajmy się ze składnią metody Sorted.

Python Składnia:

sorted (list_name, reverse=…., key=..)

Wyjaśnienie kodu:

  • Funkcja sorted sortuje listę w kolejności rosnącej lub malejącej.
  • Funkcja przyjmuje trzy parametry, z czego dwa są typu opcjonalnego, a jeden typu wymaganego.
  • Parametr nazwa_listy jest wymagany w przypadku korzystania z metody Sorted.
  • Metoda Sorted może przyjmować jako dane wejściowe dowolny typ listy iterowalnej.
  • Parametry kluczowe i parametry odwrotne są parametrami opcjonalnymi w ramach metody sortowania Python.

Oto przykład użycia funkcji sortowania i sortowania w Python jak pokazano poniżej: –

Python kod:

#Use of the Sorted method
Base_list=[11,10,9,8,7,6]
print("the original list is",Base_list)
New_list=sorted(Base_list)
print("the New list using sorted method is",New_list)
#Use of the Sort method
Base_list=[11,10,9,8,7,6]
print("the original list is",Base_list)
New_list=Base_list.sort()
print("the New list using sort method is",New_list)

Wyjście:

the original list is [11, 10, 9, 8, 7, 6]
the new list using the sorted method is [6, 7, 8, 9, 10, 11]
the original list is [11, 10, 9, 8, 7, 6]
the new list using the sort method is None

Wyjaśnienie kodu:

  • Oryginalna lista jest przekazywana jako wymagany parametr dla posortowanej funkcji.
  • Metoda Sorted zwraca nową listę oprócz oryginalnej listy.
  • Ponieważ do metody sortowanej nie są przekazywane żadne dodatkowe parametry, nowa lista jest domyślnie sortowana w kolejności rosnącej.
  • Funkcja sortowania nie tworzy nowej listy.

Poniżej przedstawiono najważniejsze podobieństwa i różnice: –

Funkcja posortowana Funkcja sortowania
Funkcja posortowana w Python to wbudowana funkcja, która przyjmuje nazwę_listy jako wymagany parametr. Funkcja sortowania nie przyjmuje oryginalnej listy jako parametru.
Metoda sortowana zwraca nową listę Funkcja sortowania nie zwraca nowej listy
W przypadku list iterowalnych należy używać funkcji sortowanej W przypadku list nie iterowalnych należy używać funkcji sortowania.
Nie modyfikuje oryginalnej listy i pozwala zachować oryginalne dane. Funkcja sortowania modyfikuje oryginalną funkcję i dlatego zajmuje mniej miejsca w pamięci

Kiedy stosować metodę sortowaną lub metodę sortowania?

Weźmy przykład, który wymaga posortowania danych dotyczących wyścigów. Program wykorzystuje numer startowy i czas w sekundach potrzebny do ukończenia wyścigu.

Python kod:

from collections import namedtuple
Base = namedtuple('Runner', 'bibnumber duration')
blist = []
blist.append(Base('8567', 1500))
blist.append(Base('5234', 1420))
blist.append(Base('2344', 1600))
blist.append(Base('2342', 1490))
blist.append(Base('23444', 1620))
blist.append(Base('6674', 1906))
print("original list",blist)
blist.sort(key=lambda x: getattr(x, 'duration'))
top_five_result = blist[:5]
print("Results using sort function",top_five_result)
r_blist=sorted(blist,key=lambda x: getattr(x, 'duration'))
top_five_result = r_blist[:5]
print("Results using sorted function",top_five_result)

Wyjście:

original list [Runner(bibnumber='8567', duration=1500), Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='23444', duration=1620), Runner(bibnumber='6674', duration=1906)]

Results using sort function [Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='8567', duration=1500), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='23444', duration=1620)]

Results using sorted function [Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='8567', duration=1500), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='23444', duration=1620)]

Wyjaśnienie kodu:

  • Lista podstawowa jest sortowana zarówno przy użyciu funkcji sortowania, jak i funkcji sortowanej.
  • Lista podstawowa zostaje utracona po zastosowaniu funkcji sortowania.
  • Funkcji sortowania nie należy stosować do oryginalnego zbioru danych. Należy go stosować, gdy istnieje kopia oryginalnego zestawu danych.
  • Funkcja Sorted zachowuje oryginalną listę. Nie zastępuje tego.
  • Zapewnia to lepszą identyfikowalność i efektywne zarządzanie danymi.

Podsumowanie

  • Funkcja sort pomaga w sortowaniu listy liczbowej i ciągów znaków w Pythonie.
  • Może również pomóc w sortowaniu krotek.
  • Reverse i key są opcjonalnymi parametrami funkcji.
  • Jeśli zachodzi potrzeba utworzenia osobnej listy i jednoczesnego posiadania listy oryginalnej, należy użyć funkcji sortowania; w przeciwnym razie należy skorzystać z funkcji sortowania w celu uzyskania optymalnego wykorzystania pamięci.