Jak sortować listy w Python

Jak sortować listy w Python

W tym artykule obejmie przewodnik na temat sortowania list w Python. Obiekt listy Python to zbiór jednego lub więcej przedmiotów oddzielonych przecinkami. Jest to obiekt „iterowalny”, a jego elementy można uzyskać, aby iterować listę za pomocą instrukcji pętli i innych wyrażeń. Możesz sortować listę Pythona za pomocą metod „sortowania” i „sortowanego”, oba są wyjaśnione w artykule. Wszystkie próbki kodu w tym artykule są testowane z Python 3.9.5 w Ubuntu 21.04.

Metoda sortowania

Metoda sortowania sortuje listę „na miejscu”. Innymi słowy, zmodyfikuje obiekt listy, który zamierzasz sortować i ponownie zamówić jego element. Jeśli nie potrzebujesz oryginalnej listy i nie przejmuj się listą zmieniającą jej kolejność elementów „na miejscu”, jest to najbardziej wydajna metoda w Python do sortowania listy. Rozważ ten przykład:

L = [2, 8, 6, 4]
L.sortować()
Drukuj (L)

Po uruchomieniu powyższej próbki kodu należy uzyskać następujące dane wyjściowe:

[2, 4, 6, 8]

Pierwsza instrukcja w próbce kodu określa listę. Następnie metoda „sortowania” jest wywoływana na liście. Po wydrukowaniu listy możesz zobaczyć, że zamówienie oryginalnej listy zostało zmienione.

Domyślnie Python sortuje listę w kolejności rosnącej. Jeśli chcesz posortować listę w kolejności malejącej, użyj metody „odwrotnej”, jak pokazano w poniższej próbce kodu:

L = [2, 8, 6, 4]
L.sortować()
L.odwracać()
Drukuj (L)

Po uruchomieniu powyższej próbki kodu należy uzyskać następujące dane wyjściowe:

[8, 6, 4, 2]

Metoda „odwrotnej” zmienia również listę Pythona „na miejscu” bez tworzenia nowej listy.

Jeśli lista zawiera elementy ciągów, wywołanie metody „sortowania” zamówi ją alfabetycznie, gdzie najpierw uporządkowane są symbole i liczby. Spójrz na poniższą próbkę kodu:

l = [„S”, „A”, „Z”, „4”, „#”]
L.sortować()
Drukuj (L)

Po uruchomieniu powyższej próbki kodu należy uzyskać następujące dane wyjściowe:

[„#”, „4”, „a”, „s”, „z”]

Możesz także użyć metody odwrotnej na liście zawierającej elementy ciągów.

l = [„S”, „A”, „Z”, „4”, „#”]
L.sortować()
L.odwracać()
Drukuj (L)

Po uruchomieniu powyższej próbki kodu należy uzyskać następujące dane wyjściowe:

[„z”, „s”, „a”, „4”, „#”]

Metoda posortowana

Metoda posortowana również sortuje listę Pythona, w taki sam sposób jak metoda „sortowania”. Jednak zamiast modyfikować oryginalną listę, zwraca nową listę, dzięki. Rozważ kod poniżej:

list1 = [„S”, „A”, „Z”, „4”, „#”]
LIST2 = SORTED (List1)
drukuj (lista 1, lista2)

Po uruchomieniu powyższej próbki kodu należy uzyskać następujące dane wyjściowe:

[„S”, „A”, „Z”, „4”, „#”] ['#', „4”, „A”, „S”, „Z”]

W wyjściu można zobaczyć, że „List1” jest nienaruszone, a „List2” ma teraz posortowane elementy. Możesz także użyć metody „odwrotnej” w „List2”, aby zmienić swoją metodologię zamawiania.

Odwrotny argument

Możesz użyć argumentu „odwrotnego” jako alternatywy do odwrócenia funkcji zarówno w metodach „sortowania”, jak i „sortowania”, aby uzyskać sortowaną listę w kolejności malejącej. Po prostu podaj „prawdziwą” wartość, aby zmienić kolejność sortowania:

list1 = [„S”, „A”, „Z”, „4”, „#”]
list2 = posortowany (List1, reverse = true)
drukuj (lista 1, lista2)

Po uruchomieniu powyższej próbki kodu należy uzyskać następujące dane wyjściowe:

[„S”, „A”, „Z”, „4”, „#”] [„Z”, „S”, „A”, „4”, „#”]

Korzystanie z funkcji kluczowej do określenia własnej logiki do sortowania elementów listy

Zarówno metodami „sortowania”, jak i „sortowanego”, możesz określić dodatkowy argument „kluczowy”, który przyjmuje funkcję podlegającą nazywaniu jako jej wartość. Tym kluczowym argumentowi można przypisać istniejącą funkcję z wbudowanych modułów Python lub możesz dostarczyć własną funkcję niestandardową logikę. Spójrz na poniższą próbkę kodu:

list1 = [„abcde”, „xyz”, „ijkl”]
list2 = posortowany (lista1, key = len)
drukuj (lista 1, lista2)
List1.sort (key = len)
Drukuj (List1)

Po uruchomieniu powyższej próbki kodu należy uzyskać następujące dane wyjściowe:

[„abcde”, „xyz”, „ijkl”] [„xyz”, „ijkl”, „abcde”]
[„xyz”, „ijkl”, „abcde”]

Próbka kodu ilustruje użycie argumentu „kluczowego” zarówno w metodach „sortowanych”, jak i „sortowania”. Dostarczona do niego funkcja nazywa się „len”, która określa długość obiektu string. Funkcja lub podanie do nazwy powinny początkowo wziąć tylko jeden argument. Przypisujesz go do argumentu „klucz” bez użycia aparatu ortodontyczny. Funkcja przywołana dostarczona do argumentu „kluczowego” jest wywoływana na każdym elemencie listy. Wartości zwrócone z tej metody nazywania są następnie używane jako klucz do sortowania listy. Dlatego dostarczanie funkcji „len” do argumentu „kluczowego” sortuje elementy listy w kolejności ich długości, to znaczy od najkrótszych do najdłuższych. Jak wspomniano wcześniej, zawsze możesz użyć metody „odwrotnej”, aby odwrócić metodologię sortowania.

Możesz także użyć własnej funkcji niestandardowej lub funkcji lambda z jedną linią, które zwracają wartość pojedynczego wyrażenia. Spójrz na poniższą próbkę kodu, w której lista ma krotki aktualnego zapasów skrzyń owocowych:

List1 = [(„Mango”, 99), („Orange”, 51), („banan”, 76)]
List1.Sort (Key = Inventory Lambda: Inwentaryzacja [1])
Drukuj (List1)

Po uruchomieniu powyższej próbki kodu należy uzyskać następujące dane wyjściowe:

[(„Orange”, 51), („Banana”, 76), („Mango”, 99)]

Funkcja „Lambda” jest dostarczana z argumentem „Inwentaryzacja”, który jest każdym elementem listy w formie krotki. Następnie zwraca drugi element każdego krotki jako klucz (w indeksie 1). Funkcja sortowania następnie sortuje wszystkie krotki według drugiego elementu w kolejności rosnącej. Możesz także użyć funkcji „odwrotnej” lub argumentu „odwrotnego” w wyniku końcowego, aby odwrócić kolejność sortowania.

Wniosek

Są to niektóre sposoby, w których można sortować zawartość listy iterowalnej w Python. Argument „kluczowy” pozwala napisać własną niestandardową logikę sortowania, odpowiedni dla aplikacji, które mogą mieć inne potrzeby niż wbudowane metody sortowania.