Python List sort ()

Metoda sort () sortuje elementy podanej listy w określonej kolejności rosnącej lub malejącej.

Składnia sort()metody to:

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

Alternatywnie możesz również użyć wbudowanej funkcji sort () języka Python w tym samym celu.

 posortowane (lista, klucz =…, do tyłu =…)

Uwaga: Najprostsza różnica między sort()i sorted()to: sort()zmienia listę bezpośrednio i nie zwraca żadnej wartości, a jednocześnie sorted()nie zmienia listy i zwraca posortowaną listę.

sort () Parametry

Domyślnie sort()nie wymaga żadnych dodatkowych parametrów. Ma jednak dwa opcjonalne parametry:

  • reverse - jeśli Trueposortowana lista jest odwrócona (lub posortowana w kolejności malejącej)
  • klucz - funkcja, która służy jako klucz do porównania sortowania

Wartość zwracana z sort ()

sort()Metoda nie zwraca żadnej wartości. Raczej zmienia oryginalną listę.

Jeśli chcesz, aby funkcja zwracała posortowaną listę, zamiast zmieniać oryginalną listę, użyj sorted().

Przykład 1: Sortuj podaną listę

 # vowels list vowels = ('e', 'a', 'u', 'o', 'i') # sort the vowels vowels.sort() # print vowels print('Sorted list:', vowels)

Wynik

 Posortowana lista: („a”, „e”, „i”, „o”, „u”)

Sortuj w porządku malejącym

sort()Sposób przyjmuje reverseparametr jako opcjonalny argument.

Ustawienie reverse = Truesortuje listę w porządku malejącym.

 list.sort(reverse=True)

Alternatywnie sorted(), możesz użyć następującego kodu.

 sorted(list, reverse=True)

Przykład 2: Sortuj listę w porządku malejącym

 # vowels list vowels = ('e', 'a', 'u', 'o', 'i') # sort the vowels vowels.sort(reverse=True) # print vowels print('Sorted list (in Descending):', vowels)

Wynik

 Lista posortowana (malejąco): ('u', 'o', 'i', 'e', ​​'a')

Sortuj według funkcji niestandardowej za pomocą klawisza

Jeśli chcesz mieć własną implementację do sortowania, sort()metoda akceptuje również keyfunkcję jako opcjonalny parametr.

Na podstawie wyników funkcji klucza można posortować podaną listę.

 list.sort(key=len)

Alternatywnie do sortowania:

 sorted(list, key=len)

Oto lenwbudowana funkcja Pythona do zliczania długości elementu.

Lista jest sortowana na podstawie długości każdego elementu, od najmniejszej liczby do największej.

Wiemy, że krotka jest domyślnie sortowana przy użyciu pierwszego parametru. Spójrzmy, jak dostosować sort()metodę sortowania przy użyciu drugiego elementu.

Przykład 3: Sortuj listę za pomocą klucza

 # take second element for sort def takeSecond(elem): return elem(1) # random list random = ((2, 2), (3, 4), (4, 1), (1, 3)) # sort list with key random.sort(key=takeSecond) # print list print('Sorted list:', random)

Wynik

 Posortowana lista: ((4, 1), (2, 2), (1, 3), (3, 4))

Weźmy inny przykład. Załóżmy, że mamy listę informacji o pracownikach biura, gdzie każdy element jest słownikiem.

Listę możemy posortować w następujący sposób:

 # sorting using custom key employees = ( ('Name': 'Alan Turing', 'age': 25, 'salary': 10000), ('Name': 'Sharon Lin', 'age': 30, 'salary': 8000), ('Name': 'John Hopkins', 'age': 18, 'salary': 1000), ('Name': 'Mikhail Tal', 'age': 40, 'salary': 15000), ) # custom functions to get employee info def get_name(employee): return employee.get('Name') def get_age(employee): return employee.get('age') def get_salary(employee): return employee.get('salary') # sort by name (Ascending order) employees.sort(key=get_name) print(employees, end='') # sort by Age (Ascending order) employees.sort(key=get_age) print(employees, end='') # sort by salary (Descending order) employees.sort(key=get_salary, reverse=True) print(employees, end='')

Wynik

(('Imię': 'Alan Turing', 'wiek': 25, 'wynagrodzenie': 10000), ('Imię': 'John Hopkins', 'wiek': 18, 'wynagrodzenie': 1000), ('Nazwisko ':' Michaił Tal ',' wiek ': 40,' wynagrodzenie ': 15000), (' Imię ':' Sharon Lin ',' wiek ': 30,' wynagrodzenie ': 8000)) ((' Imię ':' John Hopkins ',' wiek ': 18,' wynagrodzenie ': 1000), (' Imię ':' Alan Turing ',' wiek ': 25,' wynagrodzenie ': 10000), (' Imię ':' Sharon Lin ', 'wiek': 30, 'wynagrodzenie': 8000), ('Imię': 'Michaił Tal', 'wiek': 40, 'wynagrodzenie': 15000)) (('Imię': 'Michaił Tal', 'wiek' : 40, 'wynagrodzenie': 15000), ('Imię': 'Alan Turing', 'wiek': 25, 'wynagrodzenie': 10000), ('Imię ':' Sharon Lin ',' wiek ': 30,' wynagrodzenie ': 8000), (' Imię ':' John Hopkins ',' wiek ': 18,' wynagrodzenie ': 1000))

Tutaj, w pierwszym przypadku, nasza funkcja niestandardowa zwraca nazwisko każdego pracownika. Ponieważ nazwa to a string, Python domyślnie sortuje ją w kolejności alfabetycznej.

W drugim przypadku funkcja age ( int) jest zwracana i sortowana w kolejności rosnącej.

W trzecim przypadku funkcja zwraca wynagrodzenie ( int) i jest sortowana malejąco za pomocą reverse = True.

Dobrą praktyką jest używanie funkcji lambda, gdy funkcję można podsumować w jednym wierszu. Zatem możemy również napisać powyższy program jako:

 # sorting using custom key employees = ( ('Name': 'Alan Turing', 'age': 25, 'salary': 10000), ('Name': 'Sharon Lin', 'age': 30, 'salary': 8000), ('Name': 'John Hopkins', 'age': 18, 'salary': 1000), ('Name': 'Mikhail Tal', 'age': 40, 'salary': 15000), ) # sort by name (Ascending order) employees.sort(key=lambda x: x.get('Name')) print(employees, end='') # sort by Age (Ascending order) employees.sort(key=lambda x: x.get('age')) print(employees, end='') # sort by salary (Descending order) employees.sort(key=lambda x: x.get('salary'), reverse=True) print(employees, end='')

Wynik

(('Imię': 'Alan Turing', 'wiek': 25, 'wynagrodzenie': 10000), ('Imię': 'John Hopkins', 'wiek': 18, 'wynagrodzenie': 1000), ('Nazwisko ':' Michaił Tal ',' wiek ': 40,' wynagrodzenie ': 15000), (' Imię ':' Sharon Lin ',' wiek ': 30,' wynagrodzenie ': 8000)) ((' Imię ':' John Hopkins ',' wiek ': 18,' wynagrodzenie ': 1000), (' Imię ':' Alan Turing ',' wiek ': 25,' wynagrodzenie ': 10000), (' Imię ':' Sharon Lin ', 'wiek': 30, 'wynagrodzenie': 8000), ('Imię': 'Michaił Tal', 'wiek': 40, 'wynagrodzenie': 15000)) (('Imię': 'Michaił Tal', 'wiek' : 40, 'wynagrodzenie': 15000), ('Imię': 'Alan Turing', 'wiek': 25, 'wynagrodzenie': 10000), ('Imię ':' Sharon Lin ',' wiek ': 30,' wynagrodzenie ': 8000), (' Imię ':' John Hopkins ',' wiek ': 18,' wynagrodzenie ': 1000))

Aby dowiedzieć się więcej o funkcjach lambda, odwiedź stronę Python Lambda Functions.

Interesujące artykuły...