Jak sortować listy w Pythonie

How Sort Lists Python



Ten artykuł zawiera przewodnik po sortowaniu list w Pythonie. Obiekt listy w Pythonie jest zbiorem jednego lub więcej elementów oddzielonych przecinkami. Jest to obiekt iterowalny, a do jego elementów można uzyskać dostęp poprzez iterację po liście za pomocą instrukcji pętli i innych wyrażeń. Listę Pythona można posortować za pomocą metod sortowania i sortowania, obie są wyjaśnione w artykule. Wszystkie próbki kodu w tym artykule są testowane w Pythonie 3.9.5 w Ubuntu 21.04.

Metoda sortowania

Metoda sortowania sortuje listę na miejscu. Innymi słowy, zmodyfikuje obiekt listy, który zamierzasz posortować, i zmieni kolejność jego elementu. Jeśli nie potrzebujesz oryginalnej listy i nie masz nic przeciwko, aby lista zmieniała kolejność elementów w miejscu, jest to najbardziej wydajna metoda sortowania listy w Pythonie. Rozważmy ten przykład:







ten= [2, 8, 6, 4]

ten.sortować()

wydrukować (ten)

Po uruchomieniu powyższego przykładowego kodu powinieneś otrzymać następujące dane wyjściowe:



[2, 4, 6, 8]

Pierwsza instrukcja w przykładowym kodzie definiuje listę. Następnie na liście wywoływana jest metoda sortowania. Po wydrukowaniu listy widać, że kolejność oryginalnej listy została zmieniona.



Domyślnie Python sortuje listę w porządku rosnącym. Jeśli chcesz posortować listę w kolejności malejącej, użyj metody odwrotnej, jak pokazano w poniższym przykładzie kodu:





ten= [2, 8, 6, 4]

ten.sortować()

ten.odwrócić()

wydrukować (ten)

Po uruchomieniu powyższego przykładowego kodu powinieneś otrzymać następujące dane wyjściowe:

[8, 6, 4, 2]

Metoda odwrotna zmienia również listę Pythona w miejscu bez tworzenia nowej listy.



Jeśli twoja lista zawiera elementy ciągu, wywołanie na niej metody sort uporządkuje ją alfabetycznie, gdzie najpierw są uporządkowane symbole i liczby. Spójrz na poniższy przykładowy kod:

ten= ['s', 'do', 'z', „4”, „#”]

ten.sortować()
wydrukować (ten)

Po uruchomieniu powyższego przykładowego kodu powinieneś otrzymać następujące dane wyjściowe:

[„#”, „4”, 'do', 's', 'z']

Możesz również użyć metody odwrotnej na liście zawierającej elementy ciągu.

ten= ['s', 'do', 'z', „4”, „#”]

ten.sortować()

ten.odwrócić()

wydrukować (ten)

Po uruchomieniu powyższego przykładowego kodu powinieneś otrzymać następujące dane wyjściowe:

['z', 's', 'do', „4”, „#”]

Metoda sortowania

Metoda sortowana również sortuje listę Pythona, w taki sam sposób jak metoda sort. Jednak zamiast modyfikować oryginalną listę, zwraca nową listę, dzięki czemu oryginalna lista pozostaje nietknięta na wypadek, gdybyś chciał ją ponownie wykorzystać. Rozważ poniższy kod:

lista1= ['s', 'do', 'z', „4”, „#”]

lista2= posortowane(lista1)

wydrukować (lista1,lista2)

Po uruchomieniu powyższego przykładowego kodu powinieneś otrzymać następujące dane wyjściowe:

['s', 'do', 'z', „4”, „#”] [„#”, „4”, 'do', 's', 'z']

Możesz zobaczyć w danych wyjściowych, że lista1 jest nienaruszona, a lista2 ma teraz posortowane elementy. Możesz również użyć metody odwrotnej na list2 do zmiany metodologii porządkowania.

Odwrotny argument

Możesz użyć argumentu reverse jako alternatywy dla funkcji reverse zarówno w metodzie sortowania, jak i sortowania, aby uzyskać posortowaną listę w kolejności malejącej. Po prostu podaj wartość True, aby zmienić kolejność sortowania:

lista1= ['s', 'do', 'z', „4”, „#”]

lista2= posortowane(lista1,odwrócić=Prawdziwe)

wydrukować (lista1,lista2)

Po uruchomieniu powyższego przykładowego kodu powinieneś otrzymać następujące dane wyjściowe:

['s', 'do', 'z', „4”, „#”] ['z', 's', 'do', „4”, „#”]

Używanie funkcji klucza do określenia własnej logiki sortowania elementów listy

W metodach sortowania i sortowania można określić dodatkowy argument klucza, który przyjmuje funkcję wywoływalną jako swoją wartość. Do tego kluczowego argumentu można przypisać istniejącą funkcję z wbudowanych modułów Pythona lub można podać własną funkcję z niestandardową logiką. Spójrz na poniższy przykładowy kod:

lista1= [„abcd”, „xyz”, „jkl”]

lista2= posortowane(lista1,klucz=len)

wydrukować (lista1,lista2)

lista1.sortować(klucz=len)

wydrukować (lista1)

Po uruchomieniu powyższego przykładowego kodu powinieneś otrzymać następujące dane wyjściowe:

[„abcd”, „xyz”, „jkl”] [„xyz”, „jkl”, „abcd”]

[„xyz”, „jkl”, „abcd”]

Przykładowy kod ilustruje użycie argumentu klucza w metodach sortowanych i sortujących. Dostarczona do niego funkcja nazywa się len, która określa długość obiektu tekstowego lub elementu iteracyjnego. Funkcja lub wywoływalna powinna początkowo przyjmować tylko jeden argument. Przypisujesz go do argumentu key bez użycia nawiasów klamrowych. Funkcja wywoływalna dostarczona do argumentu key jest wywoływana dla każdego elementu listy. Wartości zwrócone przez tę wywoływalną metodę są następnie używane jako klucz do sortowania listy. Stąd podanie funkcji len do argumentu klucza sortuje elementy listy w kolejności ich długości, to znaczy od najkrótszego do najdłuższego. 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 jednowierszowych funkcji lambda, które zwracają wartość pojedynczego wyrażenia. Spójrz na przykładowy kod poniżej, gdzie lista zawiera krotki aktualnego spisu skrzynek na owoce:

lista1= [('mango', 99), ('Pomarańczowy', 51), ('banan', 76)]

lista1.sortować(klucz=lambdainwentarz: inwentarz[1])

wydrukować (lista1)

Po uruchomieniu powyższego przykładowego kodu powinieneś otrzymać następujące dane wyjściowe:

[('Pomarańczowy', 51), ('banan', 76), ('mango', 99)]

Funkcja lambda jest dostarczana z inwentarzem argumentów, czyli każdym elementem listy w postaci krotki. Następnie zwraca drugi element każdej krotki jako klucz (o indeksie 1). Funkcja sort sortuje następnie wszystkie krotki według drugiego elementu w kolejności rosnącej. Możesz również użyć funkcji reverse lub argumentu reverse w wyniku końcowym, aby odwrócić kolejność sortowania.

Wniosek

Oto kilka sposobów sortowania zawartości listy iterowalnej w Pythonie. Argument key umożliwia napisanie własnej niestandardowej logiki sortowania, odpowiedniej dla aplikacji, które mogą mieć inne potrzeby niż wbudowane metody sortowania.