Вступ до сортування в Python

У якийсь момент програми або програми нам потрібно сортувати дані в певному порядку, наприклад, сортувати співробітників за заробітною платою або за деяким рангом, сортувати список продуктів за ціною товару та інше. У такому випадку розробнику потрібно реалізувати сортування в програмі, якщо розробник використовує мову програмування python, то це буде дуже легко реалізувати. Python пропонує вбудовані функції для виконання основних функцій сортування або налаштування сортування на детальному рівні. Є 2 вбудовані функції в python для сортування.

Давайте подивимось, як сортувати різні типи даних, сортувати дані в налаштованому порядку.

  • Нам потрібно провести сортування за колекцією елементів або груп елементів, тому ми отримаємо колекцію елементів у певному порядку сортування. Для сортування порівняння потрібно проводити між кожним елементом колекції, а порівняння можливе лише і лише в тому випадку, якщо вони одного типу даних, тому сортування ми можемо проводити під час збирання, якщо вони є тими ж елементами типу даних, наприклад, ціле число до цілого числа може порівнювати, але не ціле число до рядка.
  • Наступним моментом є створення колекції елементів, у python ми маємо списки, кортежі, набори та словникові структури даних, які використовувались для зберігання колекції елементів. Тому для проведення сортування потрібно мати базове розуміння тези. Ми будемо використовувати Python 3, синтаксис може дещо відрізнятися, якщо ви також використовуєте Python 2 та приклад виводу.

Функція сортування в пітоні

У python є дві вбудовані функції сортування.

  • сортувати ()
  • сортував ()

Нижче згадуються дві функції сортування:

1. сортувати ()

Метод sort () сортує елементи заданого списку колекцій у певному порядку - за зростанням чи за спаданням.

Синтаксис функції sort ():

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

  • key - ключ параметра, який визначає функцію, яка використовується для порівняння сортування.
  • Зворотний - параметр "Зворотний параметр", якщо є "істинним", відсортований список відміняється, що означає сортування у порядку зменшення.

Для отримання опису функції сортування використовується команда довідки, наведена нижче.

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

Почнемо функцію сортування з прикладу.

Приклад №1:

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

Вихід:

Як і у наведеному вище коді, несортований список створюється (20, 50, 10, 40, 60) і додатково застосовує функцію sort (), яка сортує список у порядку зростання та нічого не повертає.

Далі ми спробуємо функцію sort () для десяткових чи плаваючих типів даних.

Приклад №2:

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

Вихід:

Далі ми спробуємо функцію sort () для типу даних char.

Приклад №3:

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

Вихід:

Далі ми спробуємо функцію sort () для типу даних String.

Приклад №4:

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

Вихід:

Далі ми спробуємо сортувати () функцію на різних елементах даних.

Приклад №5:

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

Вихід:

Далі ми спробуємо функцію sort () з аргументами revers.

Приклад №6:

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

Вихід:

У наведеному вище коді створюється несортований список (26.7, 34.23, 67.45, 89.34, 23.18) і далі застосовується функція сортування () із зворотним = Істинно, значення за замовчуванням зворотного значення - Неправильне, яке сортує список у зворотному порядку або у порядку зменшення.

Далі ми спробуємо функцію sort () з ключовими аргументами:

Ключовий параметр є найважливішим компонентом функції sort (). До цього аргументу передається функція, яка буде використовуватися для кожного елемента списку, відсортованого для упорядкування в отриманому порядку.

Почнемо з прикладу, припустимо, у нас є список рядків, і ми хочемо сортувати список на основі довжини рядків у списку у порядку зростання (найкоротший до найдовшої довжини). Вбудована функція len () у python повертає довжину рядка, тому len () може використовуватися для передачі ключового аргументу.

Приклад №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)

Вихід:

Отриманий порядок list.sort (key = len) - це список рядків сортування в порядку найкоротшого до найдовшого. Тоді як list.sort (key = len, reverse = True), внаслідок чого порядок списку найдовший до найкоротшої довжини. Довжина кожного елемента в списку визначається функцією len ().

Далі ми спробуємо функцію sort () за допомогою ключа, що передає користувачеві визначення функції:

Приклад №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)

Вихід:

Отриманий порядок list.sort (key = sort_onSecondChar)) - це список рядків сортування у порядку зростання за другим символом. В той час, як list.sort (key = sort_onSecondChar, reverse = True) в результаті порядок списку зменшується на основі другого символу. Сортування кожного елемента у списку визначається користувачем для визначення функції sort_onSecondChar ().

2. відсортовано ()

Відсортований () функція викликає список або колекцію, він повертає новий відсортований список. Функція сортування () не редагує та не змінює список, за яким він викликається, але повертає відсортований список у результаті його.

Синтаксис сортованої () функції:

sorted(iterable, key, reverse)

  • iterable - список, кортеж, рядок, набір, заморожений набір, словник будь-якої колекції або ітерабельний, який потрібно сортувати.
  • reverse-reverse вказує, відсортований список має бути відмінений чи ні (тобто порядок зменшення). це є
  • key– вказати функцію як ключ для порівняння для сортування. Це необов’язково .

Для отримання опису функції сортування використовується команда довідки, наведена нижче.

Розглянемо приклади:

Приклад №9:

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

Вихід:

Зауважте, що ми також можемо використовувати функцію list.sort () для виконання тієї самої, але відмінності полягають у тому, що функція sort () змінює сам список на місці та повертає None як результат виводу. Ще одна відмінність функції list.sort () полягає в тому, що вона може застосовуватися до єдиного списку, тоді як сортування () може застосовуватися до будь-якої колекції чи ітерабельного.

Давайте подивимось на прикладі, коли ми створюємо кортеж (ми знаємо, що для створення кортежу використовуються (і) дужки та функції кортежу, як це впорядковано, він зберігає дублікати, не може застосовуватися до індексу, і він є незмінним) і застосовуємо сортовану () функцію .

Приклад №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)

Вихід:

Якщо функція sort () застосована до кортежу, вона дає помилку "AttributeError:" tuple "об'єкт не має атрибута" сортування "".

Тому функція sort () не може застосовуватися до кортежу, навіть не може застосовуватися до інших колекцій, крім списку.

Далі ми побачимо кілька прикладів із різними типами даних:

Приклад №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)

Вихід:

Далі ми спробуємо сортувати () функцію із зворотним параметром:

Розглянемо приклад:

Приклад №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)

Вихід:

Далі ми побачимо сортовану () функцію з ключовим параметром, внизу коду додано функцію передачі len () до ключового параметра, тож функція sorted () поверне список у порядку сортування залежно від довжини елементів.

Приклад №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)

Вихід:

Далі ми побачимо сортовану () функцію з ключовим параметром, як користувач визначає функцію, внизу коду відрізається передача функції returnSecond () до ключового параметра. Функція returnSecond () - це визначена користувачем функція, яка просто повертає другий елемент, тому функція sorted () повертає новий відсортований список у порядку сортування на основі другого елемента кортежу. Якщо ми хочемо сортувати на основі першого елемента, тоді відредагуємо функцію returnSecond (), щоб повернути перший елемент як (L (0)).

Приклад №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)

Вихід:

Ми змінюємо наведений вище код за допомогою функції лямбда (функція лямбда - це анонімна функція, імітує те саме, що вбудовані функції C і C ++).

Приклад №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)

Вихід:

Вищевказаний код змінює сортування на основі першого елемента шляхом зміни функції лямбда.

Приклад №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)

Вихід:

Тепер давайте створимо список реквізитів учнів та збережемо деталі кожного учня кортеж, який ми будемо використовувати. Один кортеж містить один запис учня, перший елемент в кортежі - це ім'я учня, другий елемент - це рулонний номер студента, а третій елемент - загальна оцінка студента. Далі ми хочемо зберегти реквізити учнів у порядку їх оцінок, тому почнемо кодування.

Приклад №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))

Вихід:

Висновок

Функція sort () та sorted () використовується для сортування колекції. List.sort () редагує сам список, тоді як відсортований (список) не редагує список повертає новий відсортований список. Функція sort () застосовується лише до списку, тоді як функція sorted () може застосовуватися до всіх колекцій, таких як список, кортеж, словник та всі.

Рекомендовані статті

Це посібник зі сортування в Python. Тут ми обговорюємо дві вбудовані функції сортування в python із програмою та результатом. Ви також можете переглянути наступну статтю, щоб дізнатися більше -

  1. Змінні Python
  2. Деструктор в Python
  3. Підключення до бази даних Python
  4. Редактори Python
  5. Типи даних PL / SQL
  6. Різні типи даних SQL з прикладами