8.1 Sortowanie listy
Sortowanie listy w Pythonie to ważna operacja, która pozwala uporządkować dane dla wygody analizy lub prezentacji. Python oferuje kilka sposobów sortowania list, z których każdy może być przydatny w zależności od zadania i wymaganych wyników.
Metoda sort()
Metoda sort()
sortuje listę na miejscu, czyli zmienia oryginalną listę. Jest bardzo efektywna i pozwala dostosować sortowanie poprzez argumenty.
numbers = [5, 2, 9, 1]
numbers.sort()
print(numbers) # Wyświetli [1, 2, 5, 9]
Można posortować listę w odwrotnej kolejności, ustawiając parametr reverse=True
.
numbers = [5, 2, 9, 1]
numbers.sort(reverse=True)
print(numbers) # Wyświetli [9, 5, 2, 1]
Funkcja sorted()
Funkcja sorted()
tworzy nową listę, będącą posortowaną wersją oryginalnej. Oryginalna lista nie jest zmieniana, co często czyni sorted()
preferowanym wyborem, gdy trzeba zachować oryginalne dane bez zmian.
numbers = [5, 2, 9, 1]
sorted_numbers = sorted(numbers)
print(sorted_numbers) # Wyświetli [1, 2, 5, 9]
print(numbers) # Oryginalna lista niezmieniona [5, 2, 9, 1]
Ważne jest, aby pamiętać, że sort()
zmienia oryginalną listę, a sorted()
zwraca nową posortowaną listę, pozostawiając oryginał nienaruszonym. Używaj sort()
, jeśli potrzebujesz zmienić dane na miejscu, oraz sorted()
, jeśli chcesz zachować oryginalny porządek danych.
8.2 Sortowanie według klucza
Czasami potrzebne są bardziej złożone scenariusze sortowania, lub sortowanie z pominięciem niektórych parametrów. W takim przypadku pomaga «sortowanie według klucza». Aby z niego skorzystać, należy przekazać do metody sort()
lub funkcji sorted()
specjalny parametr — key
.
Jako wartość parametru key
trzeba przekazać funkcję, która będzie wykorzystywana przy porównywaniu elementów.
Porównanie ciągów bez uwzględnienia wielkości liter
Przed porównaniem wszystkie ciągi są konwertowane do małych liter
alist = ["banana", "Orange", "Kiwi", "cherry"]
alist.sort(key=str.lower)
print(alist) # Wyświetli ['banana', 'cherry', 'Kiwi', 'Orange']
Przykład sortowania listy krotek
Załóżmy, że masz listę studentów, gdzie każdy element to krotka (tuple)
, zawierająca imię studenta i jego ocenę. Chcesz posortować studentów według ich ocen:
students = [('Alice', 88), ('Bob', 75), ('Carol', 96)]
def get_grade(student):
return student[1]
students.sort(key=get_grade)
print(students) # Wyświetli [('Bob', 75), ('Alice', 88), ('Carol', 96)]
Przykład sortowania listy słowników
Albo masz listę słowników, gdzie każdy słownik zawiera informacje o studentach. Aby je posortować według ocen, należy napisać kod tego typu:
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) # Wyświetli [{'name': 'Bob', 'grade': 75}, {'name': 'Alice', 'grade': 88}, {'name': 'Carol', 'grade': 96}]
GO TO FULL VERSION