Python Sortowanie listy() z przykładami

⚡ Inteligentne podsumowanie

Python Funkcja list sort() porządkuje elementy listy na swoim miejscu, domyślnie rosnąco lub malejąco poprzez parametr reverse, podczas gdy opcjonalna funkcja klawiszowa sortuje według niestandardowych kryteriów, takich jak długość, pola krotek lub funkcje zdefiniowane przez użytkownika.

  • 🔘 Składnia: Metoda sort() akceptuje opcjonalny klucz i parametry odwrotne i modyfikuje oryginalną listę bez tworzenia kopii.
  • Kontrola zamówień: Ustawienie parametru odwrotnego na True sortuje wartości od najwyższej do najniższej, zamiast domyślnej kolejności rosnącej.
  • Kluczowy parametr: Kluczowa funkcja, taka jak len, sortuje elementy według wartości pochodnej, np. długości ciągu znaków lub pola krotki.
  • 🧪 sortować vs sortowane: Metoda sort() zmienia listę na miejscu i zwraca None, podczas gdy metoda sorted() zwraca nową listę i zachowuje oryginalną.
  • 🛠️. Kryteria niestandardowe: Wyrażenia lambda i funkcje zdefiniowane przez użytkownika umożliwiają sort() sortowanie krotek, słowników i krotek nazwanych według dowolnie wybranego atrybutu.
  • 🤖 Przepływy pracy AI: Procesy uczenia maszynowego sortują przewidywania według wyniku i wybierają najlepsze wyniki przed ich uszeregowaniem lub oceną.

Python Sortowanie listy()

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

Funkcja sort() w Python Pomaga sortować listę w kolejności rosnącej lub malejącej. Można go używać do sortowania listy numerycznej, krotek i listy ciągów znaków. Nie tworzy osobnej listy, lecz modyfikuje lub sortuje oryginalną.

Składnia metody sortowania w Python

Funkcja sortowania ma następującą składnię:

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

Funkcja sortowania ma dwa opcjonalne parametry, mianowicie:

  • Klucz: - Służy do sortowania funkcji w oparciu o kryterium sortowania.
  • Reverse: – przyjmuje wartość true lub false. Jeśli 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']

Code Wyjaśnienie:

  • 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.

Przyjrzyjmy się poniższemu przykładowi:

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.

Można utworzyć niestandardową funkcję 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

Poniżej znajduje się przykład krotki i dostosowanej funkcji ilustrującej sposób, w jaki 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)]

Code Wyjaśnienie:

  • 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, która określa długość elementu. Określona długość może zostać wykorzystana do indeksowania w funkcji sortowania. W tym celu przypisujemy Len do Python parametr kluczowy funkcji sortowania.

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

Python Code:

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

Code Wyjaśnienie:

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.
  • Tutaj słowa alto i java mają długość 4, które są ułożone jako pierwsze na liście, a następnie Guru99, który ma długość 6.

Przykład ten ilustruje koncepcję parametru odwrotnego w funkcji sortowania, jak pokazano poniżej:

Python Code:

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 również użyć funkcji zdefiniowanej przez użytkownika jako parametru kluczowego do sortowania listy. Oto przykład:

Python Code:

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

Code Wyjaśnienie:

  • 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

Po przeanalizowaniu powyższych przykładów, warto porównać oba narzędzia sortujące bezpośrednio. Zanim jednak podsumujemy różnice, przyjrzyjmy się składni metody Sorted.

Python Składnia:

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

Code Wyjaśnienie:

  • 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:

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

Code Wyjaśnienie:

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

Code Wyjaśnienie:

  • 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.
  • To oferuje lepsze tracmożliwości i efektywne zarządzanie danymi.

FAQ

Przekaż key=str.lower do metody sort(), na przykład names.sort(key=str.lower). Każdy ciąg znaków jest porównywany małymi literami, więc „Apple” i „banana” są sortowane alfabetycznie, niezależnie od wielkości liter. Oryginalna wielkość liter każdego elementu jest zachowywana w ostatecznej posortowanej liście.

Sortowanie listy wszystkich liczb lub wszystkich ciągów działa, ale mieszanie niespokrewnionych typów, takich jak liczby całkowite i ciągi, powoduje błąd TypeError, ponieważ Python Nie można ich porównać. Najpierw przekonwertuj wartości na jeden porównywalny typ lub przekaż funkcję klucza, która zwraca porównywalne klucze.

Python Historycznie używany Timsort, hybryda sortowania przez scalanie i sortowania przez wstawianie. Od wersji 3.11 interpreter używa Powersort, wariantu opartego na Timsort, z inteligentniejszą polityką scalania. Oba są stabilne i działają w czasie O(n log n) w najgorszym przypadku.

Tak. Metoda sort() jest stabilna, więc elementy, które porównują się ze sobą, zachowują swoją pierwotną kolejność względną. Pozwala to na sortowanie według kilku kryteriów etapami, sortując najpierw klucz najmniej ważny, a na końcu klucz najważniejszy.

Metoda sort() działa w czasie O(n log n) w najgorszym i przeciętnym przypadku. W przypadku danych, które są już w większości uporządkowane, osiąga czas O(n), ponieważ algorytm bazowy wykrywa i ponownie wykorzystuje istniejące posortowane przebiegi zamiast je ponownie sortować.

Przekaż klucz, który konwertuje każdy element podczas porównywania, na przykład nums.sort(key=int). Lista jest wtedy sortowana według wartości liczbowej, a nie według znaku, więc „10” poprawnie sortuje po „9”. Przechowywane elementy pozostają jako ciągi znaków; tylko porównanie wykorzystuje ich wartość całkowitą.

Sortowanie porządkuje prognozy według wyniku lub prawdopodobieństwa, wybiera najlepsze wyniki w systemach rankingowych i rekomendacyjnych oraz porządkuje rekordy podczas przygotowywania danych. Procesy uczenia maszynowego często sortują wartości cech lub wyniki modeli przed oceną, dlatego wbudowana metoda sort() jest powszechnym krokiem wstępnego przetwarzania.

Tak. GitHub Copilot i agenci AI generują wywołania sort() i sorted(), w tym kluczowe funkcje i wyrażenia lambda, z krótkiego komentarza. Mogą refaktoryzować pętle do pojedynczych instrukcji sortowania, choć nadal należy testować kolejność i potwierdzać wynik w przypadkach brzegowych.

Podsumuj ten post następująco: