Wyjaśnienie lekcji
Po tej lekcji będziesz potrafić:
.sort() i rozpoznawać jej zwracaną wartość None.sorted(), pozostawiając oryginał bez zmian.reverse=True.Sortowanie i odwracanie to różne operacje. Sortowanie porządkuje porównywalne elementy według wartości; odwracanie tylko odwraca ich istniejącą kolejność.
items.sort() zmienia oryginalną listę i zwraca None. Jeśli potrzebujesz oddzielnej uporządkowanej wersji, użyj sorted(items): tworzy nową listę, nawet gdy dane wejściowe są inną sekwencją, np. krotką. Obie funkcje domyślnie sortują rosnąco; reverse=True daje porządek malejący.
items.reverse() odwraca istniejącą kolejność w miejscu; niczego nie sortuje. Nie polegaj na tym, że .sort() lub .reverse() zwrócą listę.
Ta lekcja używa wartości, które Python może porównywać bezpośrednio (liczby z liczbami albo napisy z napisami). Sortowanie słowników według zagnieżdżonych pól za pomocą funkcji key= należy do Myślenia w stylu Pythona, po wprowadzeniu funkcji wyższego rzędu.
versions = [5, 2, 4]
versions.sort()
print(versions)Wynik:
[2, 4, 5]Istniejąca lista zawiera teraz posortowane wartości.
latencies = [80, 40, 65]
ordered = sorted(latencies)
print(ordered)
print(latencies)Wynik:
[40, 65, 80]
[80, 40, 65]sorted() zwraca nową listę, pozostawiając źródło bez zmian.
scores = [7, 12, 9]
scores.sort(reverse=True)
print(scores)Wynik:
[12, 9, 7]reverse=True zmienia kierunek sortowania.
steps = ["compile", "test", "ship"]
steps.reverse()
print(steps)Wynik:
['ship', 'test', 'compile']Kolejność zostaje odwrócona, a nie uporządkowana alfabetycznie.
| Cel | Python | Modyfikuje oryginał? |
|---|---|---|
| Sortowanie rosnące | items.sort() | Tak |
| Posortowana kopia | sorted(items) | Nie |
| Sortowanie malejące | sorted(items, reverse=True) | Nie |
| Odwrócenie bieżącej kolejności | items.reverse() | Tak |
Wynik items.sort() | None | — |
ordered = items.sort() zapisuje None, a nie posortowaną listę..reverse() nie jest równoważne sortowaniu malejącemu..sort() modyfikuje oryginalną listę; preferuj sorted(), gdy ważne jest zachowanie danych wejściowych.TypeError.