8.1 Сортування списку
Сортування списку в Python — важлива операція і вона дозволяє впорядковувати дані для зручності їх аналізу або представлення. Python пропонує декілька способів сортування списків, кожен з яких може бути корисним залежно від завдання і необхідних результатів.
Метод sort()
Метод sort() сортує список на місці, тобто змінює вихідний список. Він дуже ефективний і дозволяє налаштувати сортування через аргументи.
numbers = [5, 2, 9, 1]
numbers.sort()
print(numbers) # Виведе [1, 2, 5, 9]
Можна сортувати список в зворотному порядку, встановивши параметр reverse=True.
numbers = [5, 2, 9, 1]
numbers.sort(reverse=True)
print(numbers) # Виведе [9, 5, 2, 1]
Функція sorted()
Функція sorted() створює новий список, який є відсортованою версією вихідного. Вихідний список при цьому не змінюється, що часто робить sorted() кращим вибором при необхідності зберегти вихідні дані без змін.
numbers = [5, 2, 9, 1]
sorted_numbers = sorted(numbers)
print(sorted_numbers) # Виведе [1, 2, 5, 9]
print(numbers) # Вихідний список не змінений [5, 2, 9, 1]
Важливо пам'ятати, що sort() змінює оригінальний список, а sorted() повертає новий відсортований список, залишаючи оригінал незмінним. Використовуйте sort(), якщо вам потрібно змінити дані на місці, і sorted(), якщо ви хочете зберегти вихідний порядок даних.
8.2 Сортування за ключем
Іноді бувають потрібні складні сценарії сортування, або сортування з ігноруванням деяких параметрів. В цьому випадку нам на допомогу приходить «сортування за ключем». Для його використання потрібно передати в метод sort() або функцію sorted() спеціальний параметр — key.
В якості значення параметра key потрібно передати функцію, яка буде використовуватися при порівнянні елементів.
Порівняння рядків без урахування регістру
Перед порівнянням всі рядки приводяться до нижнього регістру
alist = ["banana", "Orange", "Kiwi", "cherry"]
alist.sort(key=str.lower)
print(alist) # Виведе ['banana', 'cherry', 'Kiwi', 'Orange']
Приклад сортування списку кортежів
Припустимо, у вас є список студентів, де кожен елемент — це кортеж (tuple), що містить ім'я студента та його оцінку. Ви хочете відсортувати студентів за їх оцінками:
students = [('Alice', 88), ('Bob', 75), ('Carol', 96)]
def get_grade(student):
return student[1]
students.sort(key=get_grade)
print(students) # Виведе [('Bob', 75), ('Alice', 88), ('Carol', 96)]
Приклад сортування списку словників
Або у вас список словників, де кожен словник містить інформацію про студентів. Для того щоб відсортувати їх за оцінками, потрібно написати код такого типу:
students = [
{'name': 'Alice', 'grade': 88},
{'name': 'Bob', 'grade': 75},
{'name': 'Carol', 'grade': 96}
]
def get_grade(student):
return student['grade']
sorted_students = sorted(students, key=get_grade)
print(sorted_students) # Виведе [{'name': 'Bob', 'grade': 75}, {'name': 'Alice', 'grade': 88}, {'name': 'Carol', 'grade': 96}]
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ