Jak sortować listę w Pythonie (rosnąco i malejąco)
Dowiedz się, jak sortować listę w Pythonie za pomocą metody sort() i funkcji sorted(). Odkryj przykłady niestandardowego sortowania kluczy i odwrotnej kolejności.
Przegląd
Sortowanie danych to jedno z najczęstszych zadań w programowaniu, niezależnie od tego, czy porządkujesz profile użytkowników według wieku, wystawiasz produkty według ceny, czy organizujesz wyniki wyszukiwania. Python oferuje dwa wbudowane, wysoce zoptymalizowane sposoby sortowania list: metodę `list.sort()` i funkcję `sorted()`. Obydwa wykorzystują wysoce wydajny algorytm sortowania o nazwie Timsort, który działa ze złożonością czasową O(N log N).
Kluczową różnicą między nimi jest zmienność. Metoda `list.sort()` sortuje listę w miejscu, co oznacza, że bezpośrednio modyfikuje oryginalną listę i zwraca wartość `None`. Z drugiej strony funkcja `sorted()` pozostawia oryginalną listę bez zmian i zwraca zupełnie nową posortowaną listę. To rozróżnienie jest kluczowe: użyj `sort()`, jeśli chcesz zaoszczędzić pamięć i nie potrzebujesz pierwotnej kolejności, i użyj `sorted()`, gdy chcesz zachować oryginalną listę w stanie nienaruszonym lub podczas sortowania iterowalnych elementów niebędących listami, takich jak krotki lub słowniki.
Obie metody sortowania akceptują dwa opcjonalne argumenty słów kluczowych: „reverse” i „key”. Argument „odwrotny” jest wartością logiczną; ustawienie go na „True” sortuje listę w kolejności malejącej (odwrotnej). Argument „klucz” akceptuje funkcję, która jest stosowana do każdego elementu przed porównaniem. Pozwala to na złożoną logikę sortowania, taką jak sortowanie listy ciągów znaków według ich długości lub sortowanie listy słowników według określonego klucza.
Dane wyjściowe kodu i wykonania
Ten kod demonstruje sortowanie listy liczb przy użyciu funkcji sort() i sorted(), sortowanie odwrotne i niestandardowe sortowanie kluczy według długości łańcucha.
numbers = [42, 7, 12, 89, 23]
# 1. Using sorted() (returns new list)
new_sorted = sorted(numbers)
print("Original:", numbers)
print("Sorted new list:", new_sorted)
# 2. Using sort() (in-place modification)
numbers.sort()
print("Modified original list:", numbers)
# 3. Sorting in reverse (descending)
numbers.sort(reverse=True)
print("Reverse sorted list:", numbers)
# 4. Custom sorting (by string length)
words = ["banana", "pear", "apple", "fig"]
words.sort(key=len)
print("Sorted by length:", words)Original: [42, 7, 12, 89, 23]
Sorted new list: [7, 12, 23, 42, 89]
Modified original list: [7, 12, 23, 42, 89]
Reverse sorted list: [89, 42, 23, 12, 7]
Sorted by length: ['fig', 'pear', 'apple', 'banana']Wdrażanie krok po kroku
- Użyj funkcji sorted(), aby posortować kopię listy bez zmiany oryginalnych danych.
- Użyj metody .sort() bezpośrednio na obiekcie listy, aby zmodyfikować go lokalnie i zaoszczędzić pamięć.
- Przekaż Reverse=True jako parametr, aby posortować elementy w kolejności malejącej.
- Użyj key=lambda x: ..., aby posortować elementy na podstawie właściwości niestandardowych (takich jak długość lub wartości zagnieżdżone).
Często zadawane pytania
Jaka jest różnica między list.sort() a sorted()?
list.sort() modyfikuje listę na miejscu i zwraca None, podczas gdy sorted() pozostawia oryginalną listę bez zmian i zwraca nową posortowaną listę.
Jak posortować listę słowników według klucza?
Użyj parametru key z funkcją lambda lub operator.itemgetter. Na przykład: list.sort(key=lambda item: item["age"]).
Powiązane tematy
Dowiedz się, jak znaleźć długość listy w Pythonie za pomocą funkcji len(). Zrozumienie złożoności czasowej O(1) i liczby kontroli.
Jak usunąć duplikaty z listy w PythonieDowiedz się, jak usunąć duplikaty z listy w Pythonie, zachowując lub ignorując porządek. Porównaj konwersje zestawów, klawisze dyktowania i metody pętli.
Jak połączyć dwie listy w PythoniePoznaj najlepsze sposoby scalania i łączenia dwóch list w Pythonie. Porównaj operator plus, metodę rozszerzenia, rozpakowywanie listy i opcje łańcucha.
Polecane zasoby Pythona
Poszerzaj swoją wiedzę dzięki powiązanym interaktywnym samouczkom, ściągawkom i porównaniom kodów.
Wyjaśnienie zmiennych i typów danych w Pythonie
Zrozumienie zmiennych Pythona i podstawowych typów danych (łańcuchy, liczby całkowite, zmiennoprzecinkowe, wartości logiczne). Kompletny przewodnik dla początkujących dotyczący przydzielania pamięci w Pythonie.
Ściągawka dotycząca metod listy Pythona
Skrócona instrukcja obsługi operacji na listach w języku Python. Opanuj dodawanie, wstawianie, usuwanie, sortowanie i cięcie elementów.
Python kontra JavaScript: który język programowania jest najlepszy?
Kompleksowe porównanie Pythona i JavaScript. Poznaj różnice w składni, wydajność, przypadki użycia (backend vs frontend) i przykłady kodowania.