CodeGym /Kursy /Python SELF PL /Sortowanie list

Sortowanie list

Python SELF PL
Poziom 7 , Lekcja 8
Dostępny

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}]
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION