Python Список sort() із прикладами

⚡ Розумний підсумок

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

  • 🔘 Синтаксис: Метод sort() приймає необов'язкові параметри key та reverse і змінює оригінальний список без створення копії.
  • ☑️ Контроль замовлення: Якщо встановити значення параметра reverse у значення True, значення сортуються від найбільшого до найменшого, а не за зростанням за замовчуванням.
  • Ключовий параметр: Ключова функція, така як len, сортує елементи за похідним значенням, таким як довжина рядка або поле кортежу.
  • 🧪 сортування проти відсортованого: Метод sort() змінює список на місці та повертає None, тоді як sorted() повертає новий список та зберігає оригінальний.
  • 🛠️ Користувацькі критерії: Лямбда-вирази та користувацькі функції дозволяють sort() упорядковувати кортежі, словники та іменовані кортежі за будь-яким вибраним атрибутом.
  • 🤖 Робочі процеси зі штучним інтелектом: Конвеєри машинного навчання сортують прогнози за балом та вибирають найкращі результати перед ранжуванням або оцінкою.

Python Список sort()

Що таке метод sort(). Python?

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

Синтаксис методу сортування в Python

Функція сортування має такий синтаксис:

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

Функція сортування має два необов'язкові параметри, а саме:

  • Ключ: використовується для сортування функції на основі критерію сортування.
  • Reverse: – приймає значення як true або false. Якщо true, ця користувацька функція сортує список у порядку спадання.

Сортування списку в порядку зростання за допомогою методу Sort in Python

In Python, функція сортування за замовчуванням сортує будь-який список у порядку зростання. Список у порядку зростання має найменше значення ліворуч, а найвище значення – праворуч.

приклад:

Python Код:

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

вихід:

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

Code Пояснення:

  • Наведений вище список є довільно визначеним списком рядків.
  • Функція сортування Python допомагає сортувати випадковий список у порядку зростання, з найменшою довжиною слова в лівій частині та найбільшою довжиною слова в правій частині.

Сортування списку в порядку спадання

Функція сортування також дозволяє сортувати список у порядку спадання. Його можна визначити як порядок де список починається з найвищого значення і закінчується найменшим значенням.

Параметру reverse функції сортування призначається значення true, щоб отримати список, відсортований у порядку спадання.

Давайте розглянемо наведений нижче приклад:

Python Код:

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)

вихід:

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

Примітка. Переконайтеся, що призначення слова «True» зворотному параметру починається з великої літери «T», щоб уникнути будь-яких помилок під час виконання.

Сортування списку кортежів за допомогою методу Sort in Python

Python Кортежі це колекції незмінних елементів, які дотримуються впорядкованої послідовності. PythonФункцію сортування можна використовувати для сортування списку кортежів за допомогою спеціальної функції та лямбда-виразу.

Налаштовувану функцію можна створити без назви та представити лямбда-виразом. Нижче наведено синтаксис лямбда-виразу:

Синтаксис:

Lambda arguments: expression

Наведений вище синтаксис еквівалентний наведеному нижче коду python:

def name (arguments):
return expression

Ось приклад кортежу та налаштованої функції, щоб проілюструвати, як функція сортування з ключовими параметрами допомагає сортувати елементи в кортежі:

Python Код:

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)

вихід:

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

Code Пояснення:

  • Параметр reverse визначається як true для сортування кортежу в порядку спадання.
  • Налаштована функція приймає другий елемент кортежу.
  • Це використовується як ключ функції сортування.

Давайте розглянемо наведений нижче приклад, у якому використовується лямбда-вираз:

Python Код:

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)

вихід:

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

Пояснення:

  • Лямбда-вираз допомагає сортувати елементи кортежу від високого до нижчого з ключем як другим елементом кортежу.
  • Програма перевірить найбільше значення другого елемента кортежу.

Сортування елементів списку за допомогою Len як ключового параметра

Len — це вбудована функція, яка визначає довжину елемента. Визначену довжину можна використовувати для індексації у функції сортування. Для цього ми присвоюємо Len Python ключовий параметр функції сортування.

Наступні Python код ілюструє, як використовувати функцію Len із функцією сортування.

Python Code:

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

вихід:

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

Code Пояснення:

Сортування елементів списку за допомогою Len

  • Довжина елемента стає індексом для ключового параметра для впорядкування списку в порядку зростання.
  • Функція Len оцінює довжину кожного елемента в базовому списку.
  • Він зберігає найкоротший елемент з лівого боку, а найбільший елемент з правого боку.
  • Тут слова alto та java мають довжину 4, які розташовані першими у списку, а потім Guru99, довжина якого дорівнює 6.

Цей приклад ілюструє концепцію параметра reverse у функції сортування, як показано нижче:

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)

вихід:

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

Сортування елементів списку за допомогою функції, визначеної користувачем, як ключового параметра

Ви також можете використовувати визначену користувачем функцію як ключовий параметр для сортування списку. Ось приклад:

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)

вихід:

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 Пояснення:

  • Для повернення року створюється визначена користувачем функція
  • Ключовий параметр бере в якості критерію функцію, визначену користувачем.
  • Функція сортування впорядкує список у порядку зростання на основі значення елемента «рік».

Різниця між методом сортування та методом сортування в Python

Після розгляду наведених вище прикладів корисно безпосередньо порівняти два інструменти сортування. Перш ніж підсумувати відмінності, давайте розберемося з синтаксисом методу Sorted.

Python Синтаксис:

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

Code Пояснення:

  • Функція sorted сортує список у порядку зростання або спадання.
  • Функція приймає три параметри, з яких два параметри є необов’язковими, а один параметр – обов’язковим.
  • Параметр list_name є обов’язковим під час використання методу Sorted.
  • Метод Sorted може приймати будь-який тип ітерованого списку як вхідні дані.
  • Ключові параметри та зворотні параметри є необов’язковими параметрами в методі сортування в Python.

Ось приклад використання функції sort і sorted у Python:

Python Код:

#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)

вихід:

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 Пояснення:

  • Вихідний список передається як обов’язковий параметр для відсортованої функції.
  • Метод Sorted повертає новий список, окрім початкового списку.
  • Оскільки додаткові параметри не передаються до сортованого методу, новий список за замовчуванням сортується за зростанням.
  • Функція сортування не створює нового списку.

Нижче наведено ключові подібності та відмінності:

Відсортована функція Функція сортування
Відсортована функція в Python це вбудована функція, яка приймає list_name як обов’язковий параметр. Функція сортування не приймає вихідний список як параметр.
Метод Sorted повертає новий список Функція сортування не повертає новий список
Функцію Sorted слід використовувати для ітерованих списків Функцію сортування слід використовувати для неітерованих списків.
Він не змінює оригінальний список і дозволяє нам зберігати вихідні дані. Функція сортування змінює вихідну функцію і, отже, займає менше місця в пам’яті

Коли використовувати сортований метод або метод сортування?

Розглянемо приклад, який потребує сортування даних про перегони. Програма використовує номер стартового номера та час, затрачений у секундах, щоб закінчити гонку.

Python Код:

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)

вихід:

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 Пояснення:

  • Базовий список сортується за допомогою функції сортування та функції сортування.
  • Під час застосування функції сортування базовий список втрачається.
  • Функцію сортування не слід застосовувати до вихідного набору даних. Його слід використовувати, якщо є копія вихідного набору даних.
  • Функція Sorted зберігає вихідний список. Це не перекриває його.
  • Це пропонує краще tracзручність та ефективне управління даними.

Поширені запитання

Передати key=str.lower методу sort(), наприклад names.sort(key=str.lower). Кожен рядок порівнюється в нижньому регістрі, тому «Apple» та «banana» впорядковуються в алфавітному порядку незалежно від використання великих літер. Початковий регістр кожного елемента зберігається в остаточному відсортованому списку.

Сортування списку всіх чисел або всіх рядків працює, але змішування непов'язаних типів, таких як цілі числа та рядки, викликає помилку TypeError, оскільки Python не можна їх порівнювати. Спочатку перетворіть значення на один порівнянний тип або передайте функцію key, яка повертає порівнянні ключі.

Python Історично використовувався Timsort, гібрид сортування злиттям та сортування вставками. Починаючи з версії 3.11, інтерпретатор використовує Powersort, варіант, похідний від Timsort, з розумнішою політикою злиття. Обидва є стабільними та виконуються за час O(n log n) у найгіршому випадку.

Так. Метод sort() є стабільним, тому елементи, які порівнюються рівними, зберігають свій початковий відносний порядок. Це дозволяє сортувати за кількома критеріями поетапно, сортуючи за найменш важливим ключем спочатку, а за найважливішим – останнім.

Метод sort() виконується за час O(n log n) у найгіршому та середньому випадках. На даних, які вже здебільшого впорядковані, він наближається до O(n), оскільки базовий алгоритм виявляє та повторно використовує існуючі відсортовані прогони замість того, щоб пересортувати їх.

Передайте ключ, який перетворює кожен елемент під час порівняння, наприклад, nums.sort(key=int). Список потім упорядковується за числовим значенням, а не за символом, тому '10' правильно сортується після '9'. Збережені елементи залишаються як рядки; лише порівняння використовує їх ціле число.

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

Так. GitHub Copilot та агентні помічники на основі штучного інтелекту генерують виклики sort() та sorted(), включаючи ключові функції та лямбда-вирази, з короткого коментаря. Вони можуть рефакторувати цикли в окремі оператори сортування, хоча вам все одно слід перевірити порядок та підтвердити результат на граничних випадках.

Підсумуйте цей пост за допомогою: