Wprowadzenie do sortowania w Pythonie

W pewnym momencie aplikacji lub programu musimy sortować dane w określonej kolejności, na przykład sortować pracowników na podstawie wynagrodzenia lub według rangi, sortować listę produktów na podstawie ceny produktu i tak dalej. W takim przypadku programista musi zaimplementować sortowanie w programie, jeśli programista używa języka programowania Python, wówczas implementacja będzie bardzo łatwa. Python zapewnia wbudowane funkcje do przeprowadzania podstawowego sortowania lub dostosowywania funkcji sortowania na poziomie szczegółowym. W Pythonie są 2 wbudowane funkcje do sortowania.

Zobaczmy, jak sortować różne typy danych, sortować dane w dostosowanej kolejności.

  • Musimy przeprowadzić sortowanie kolekcji elementów lub grup elementów, aby uzyskać kolekcję elementów w określonej kolejności sortowania. W celu sortowania porównanie należy wykonać dla każdego elementu kolekcji, a porównanie jest możliwe tylko i tylko wtedy, gdy są one tego samego typu danych, więc sortowanie możemy wykonać na kolekcji, jeśli są to te same elementy typu danych, na przykład od liczby całkowitej do liczby całkowitej można porównać, ale nie liczbę całkowitą do ciągu.
  • Kolejnym punktem jest utworzenie kolekcji elementów, w Pythonie mamy struktury danych list, krotek, zestawów i słowników, które służyły do ​​przechowywania kolekcji elementów. Aby wykonać sortowanie, trzeba mieć podstawową wiedzę na temat tez. Użyjemy Python 3, składnia może być nieco inna, jeśli używasz Python 2 i przykładowego wyjścia.

Funkcja sortowania w pythonie

W Pythonie są dwie wbudowane funkcje sortowania.

  • sortować()
  • posortowane ()

Dwie funkcje sortowania są wymienione poniżej:

1. sort ()

Metoda sort () sortuje elementy danej listy kolekcji w określonej kolejności: Rosnąco lub Malejąco.

Składnia funkcji sort () jest następująca:

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

  • key - parametr określający parametr key, który używa do porównania sortowania.
  • Rewers - parametr reverse, jeśli true, posortowana lista jest odwrócona, co oznacza sortowanie w porządku malejącym.

Aby uzyskać opis funkcji sortowania, użyj komendy help podanej poniżej.

>>> lis=(1, 4, 3, 2) >>> help( lis.sort )

Zacznijmy funkcję sortowania od przykładu.

Przykład 1:

l = ( 20, 50, 10, 40, 60 ) print("list = ", l)
l.sort()
print("sorted list = ", l)

Wynik:

Podobnie jak w powyższym kodzie, tworzona jest nieposortowana lista (20, 50, 10, 40, 60) i dodatkowo stosowana jest funkcja sort (), która sortuje listę w porządku rosnącym i niczego nie zwraca.

Następnie próbujemy użyć funkcji sort () dla typu danych dziesiętnych lub zmiennoprzecinkowych.

Przykład 2:

l = ( 26.7, 34.23, 67.45, 89.34, 23.18 ) print("list = ", l)
l.sort()
print("sorted list = ", l)

Wynik:

Następnie próbujemy użyć funkcji sort () dla typu danych char.

Przykład 3:

l = ( 'b', 'd', 'a', 'n', 'g') print("liist = ", l)
l.sort()
print("sorted liist = ", l)

Wynik:

Następnie próbujemy użyć funkcji sort () dla typu danych String.

Przykład 4:

l = ( "banana", "apple", "orange", "mango" ) print("liist = ", l)
l.sort()
print("sorted liist = ", l)

Wynik:

Następnie próbujemy użyć funkcji sort () dla elementów różnych typów danych.

Przykład 5:

l = ( 89, 56.78, "apple" ) print("liist = ", l)
l.sort()
print("sorted liist = ", l)

Wynik:

Następnie próbujemy użyć funkcji sort () z argumentami revers.

Przykład 6:

l = ( 26.7, 34.23, 67.45, 89.34, 23.18 ) print("liist = ", l)
l.sort( reverse = True )
print("sorted liist = ", l)

Wynik:

W powyższym kodzie tworzona jest nieposortowana lista (26, 7, 34, 23, 67, 45, 89, 34, 23, 18), a następnie zastosowanie funkcji sort () z odwrotnością = True, domyślną wartością odwrotności jest False, która sortuje listę w odwrotnej kolejności lub Kolejność malejąca.

Następnie spróbujemy użyć funkcji sort () z kluczowymi argumentami:

Kluczowy parametr jest najważniejszym składnikiem funkcji sort (). Do tego argumentu przekazywana jest funkcja, która będzie używana na każdym sortowanym elemencie listy w celu uporządkowania w wynikowej kolejności.

Zacznijmy przykład, załóżmy, że mamy listę ciągów i chcemy posortować listę na podstawie długości ciągów na liście w porządku rosnącym (od najkrótszej do najdłuższej). Wbudowana funkcja len () w pythonie zwraca długość łańcucha, więc można użyć len () do przekazania argumentu klucza.

Przykład # 7:

word = "Hello"
length = len(word)
print( "The length of word is ", length)
l = ( "aaa", "bbbbb", "cc", "ddd" ) print("liist = ", l)
print( "The length of list is ", len(l))
# length of the list is 4, because it contains 4 elements
# Now we sort the list based on the length of the list elements
l.sort( key = len )
print("Sorted liist = ", l)
# Now we sort the list based on the length of the list elements and reverse
l.sort(key = len, reverse = True)
print("Sorted liist with reverse = ", l)

Wynik:

Wynikowa kolejność list.sort (key = len) jest listą łańcuchów sortujących w kolejności od najkrótszego do najdłuższego. Natomiast list.sort (key = len, reverse = True), w wyniku czego kolejność na liście jest najdłuższa do najkrótszej. Długość każdego elementu na liście zależy od funkcji len ().

Następnie próbujemy użyć funkcji sort () z kluczem przekazującym użytkownikowi zdefiniować funkcję:

Przykład nr 8:

l = ( 'banana', 'orange', 'apple' ) print("liist = ", l)
# function return second element
def sort_onSecondChar(word):
return word(1) l.sort( key = sort_onSecondChar )
print("Sorted liist based on second character = ", l)
# Now we sort the list based on the length of the list elements and reverse
l.sort( key = sort_onSecondChar, reverse = True)
print("Sorted liist based on second character with reverse = ", l)

Wynik:

Wynikowa kolejność list.sort (key = sort_onSecondChar)) jest listą łańcuchów sortujących w porządku rosnącym na podstawie drugiego znaku. Podczas gdy list.sort (key = sort_onSecondChar, reverse = True) wynikowa kolejność listy jest malejąca na podstawie drugiego znaku. Sortowanie każdego elementu na liście jest określane przez użytkownika w celu zdefiniowania funkcji sort_onSecondChar ().

2. sortowane ()

Wywołanie funkcji sorted () na liście lub kolekcji, zwraca nową posortowaną listę. Funkcja sorted () nie edytuje ani nie zmienia listy, na której jest wywoływana, ale w wyniku tego zwraca listę posortowaną.

Składnia funkcji sorted ():

sorted(iterable, key, reverse)

  • iterable - lista, krotka, ciąg, zestaw, zamrożony zestaw, słownik dowolnej kolekcji lub iteracji, które należy posortować.
  • reverse-reverse określa, czy posortowana lista ma zostać odwrócona, czy nie (czyli kolejność malejąca). To jest
  • klucz - określ funkcję jako klucz do porównania dla sortowania. To jest opcjonalne .

Aby uzyskać opis funkcji sortowania, użyj komendy help podanej poniżej.

Rozważ przykłady:

Przykład nr 9:

l = ( 2, 1, 3, 6, 5, 4 ) print("list = ", l)
sorted(l)
print( "The sorted list = ", l)

Wynik:

Zauważ, że możemy również użyć funkcji list.sort (), aby wykonać to samo, ale różnice są takie, że funkcja sort () modyfikuje samą listę w miejscu i zwraca None jako wynik wyjściowy. Inną różnicą funkcji list.sort () jest to, że może ona dotyczyć tylko jednej listy, podczas gdy sorted () może mieć zastosowanie do dowolnej kolekcji lub iterowalnej.

Zobaczmy przykład, w którym tworzymy krotkę (wiemy, że do tworzenia krotki używamy (i) nawiasów klamrowych i funkcji krotek, jeśli jest on uporządkowany, przechowuje duplikaty, nie można zastosować do indeksu i jest niezmienny) i zastosować funkcję sortowania () .

Przykład nr 10:

t = ( 60, 20, 40, 10 )
print("Tuple = ", t)
re=sorted(t)
#print return of sorted()
print( "The return sorted list of sorted() = ", re)
#we check what is there in t
print( "After sorted tuple = ", t)

Wynik:

Jeśli funkcja sort () zastosowana do krotki powoduje błąd „AttributeError: obiekt„ tuple ”nie ma atrybutu„ sort ””.

Dlatego funkcja sort () nie może mieć zastosowania do krotki, a nawet nie może mieć zastosowania do innych kolekcji z wyjątkiem listy.

Następnie zobaczymy kilka przykładów z różnymi typami danych:

Przykład nr 11:

l = ( 2.89, 56.34, 45.23 ) print("List of floating numbers = ", l)
re=sorted(l)
#print return of sorted()
print( "The return list of sorted() floating numbers = ", re)
lc = ( 'l', 'e', 'g', 'a', 'd' ) print("List of characters = ", lc)
re=sorted(lc)
#print return of sorted()
print( "The return list of sorted() characters = ", re)

Wynik:

Następnie spróbujemy użyć funkcji sorted () z parametrem reverse:

Rozważmy przykład:

Przykład # 12:

l = ( 2, 1, 3, 6, 5, 4 ) print("List = ", l)
re=sorted(l, reverse=True )
#print return of sorted()
print( "The return list of sorted() with reverse = ", re)

Wynik:

Następnie zobaczymy funkcję sorted () z parametrem kluczowym, w poniższym kodzie przyciśnięto funkcję len () do parametru kluczowego, więc funkcja sorted () zwróci listę w kolejności sortowania na podstawie długości elementów.

Przykład # 13:

l = ('aaaa', 'bb', 'ccc', 'ddddd') print("List = ", l)
re=sorted(l, key = len )
#print return of sorted()
print( "The return list of sorted() with key = ", re)

Wynik:

Następnie zobaczymy funkcję sorted () z parametrem kluczowym, gdy użytkownik zdefiniuje tę funkcję, w poniższym kodzie przyciśnięto funkcję returnSecond () do parametru kluczowego. Funkcja returnSecond () to funkcja zdefiniowana przez użytkownika, która zwraca tylko drugi element, więc funkcja sorted () zwraca nową posortowaną listę w kolejności sortowania opartej na drugim elemencie krotki. Jeśli chcemy posortować na podstawie pierwszego elementu, edytuj funkcję returnSecond (), aby zwrócić pierwszy element jako (L (0)).

Przykład # 14:

# return second element for sort
def returnSecond( L ):
return L(1) # list of tuple
list = ( ('a', 40), ('b', 30), ('c', 20), ('d', 10) ) # sorting list with key = returnSecond (returnSecond function which return second element so sort done based on seceond elemet)
sortedList = sorted(list, key = returnSecond)
# print list
print('The sorted list:', sortedList)

Wynik:

Zmieniamy powyższy kod za pomocą funkcji lambda (funkcja lambda jest funkcją anonimową, symuluje to samo co funkcje wbudowane w C i C ++).

Przykład 15:

# list of tuple
list = ( ('a', 40), ('b', 30), ('c', 20), ('d', 10) ) # sorting list with key = lambda x : x(1) (lambda function which return second element so sort done based on second element)
sortedList = sorted( list, key = lambda x : x(1))
print( "The sorted list = ", sortedList)

Wynik:

Powyższy kod zmienia sortowanie na podstawie pierwszego elementu, zmieniając funkcję lambda.

Przykład 16:

# list of tuple
list = ( ('a', 40), ('b', 30), ('c', 20), ('d', 10) ) # sorting list with key = lambda x : x(0) (lambda function which return first element so sort done based on first element)
sortedList = sorted( list, key = lambda x : x(0))
# print list
print('The sorted list:', sortedList)

Wynik:

Teraz utwórzmy listę danych ucznia i przechowuj dane każdego ucznia, którego będziemy używać. Jedna krotka zawiera jeden rekord studenta, pierwszy element w krotce to nazwisko studenta, drugi element to numer rzutu studenta, a trzeci element to łączne oceny studenta. Następnie chcemy przechowywać dane ucznia w kolejności od ich znaków, więc zacznijmy kodowanie.

Przykład # 17:

students = ( ('john', 1, 60), ('jane', 2, 70), ('dave', '3', 70.5), ('joseph', 1, 92) ) print( "The Student List = ", students)
# sorting the student list of tuple based on the third element that is marks
sortedlist = sorted(students, key=lambda stud : stud(2))
print("The sorted list = ", sortedlist)
#reverese
sortedlist = sorted(students, key=lambda stud : stud(2), reverse=True)
print("The sorted list with reverse=True ", sortedlist)
# Display the student name and marks in sorting order of their marks
sortedlist = sorted(students, key=lambda stud : stud(2))
print("The student names and marks in order of their marks")
print("name", "marks")
for x in sortedlist:
print(x(0), x(2))

Wynik:

Wniosek

Funkcje sort () i sorted () służą do sortowania kolekcji. List.sort () edytuje samą listę, podczas gdy posortowane (lista) nie edytujące na liście zwraca nową posortowaną listę. Funkcja sort () dotyczy tylko listy, natomiast funkcja sorted () może mieć zastosowanie do wszystkich kolekcji, takich jak lista, krotka, słownik i wszystko.

Polecane artykuły

Jest to przewodnik po sortowaniu w Pythonie. Tutaj omawiamy dwie wbudowane funkcje sortowania w pythonie z programem i wyjściem. Możesz także spojrzeć na następujący artykuł, aby dowiedzieć się więcej -

  1. Zmienne w języku Python
  2. Destructor in Python
  3. Połączenie z bazą danych Python
  4. Edytory Python
  5. Typy danych PL / SQL
  6. Różne typy danych SQL z przykładami