Sortowanie listy w Pythonie pozwala uporządkować jej elementy w porządku rosnącym lub malejącym.
Zamiast pisać długie bloki kodu w tym celu, Python ma wbudowaną metodę, która pozwala sortować elementy na dowolnej liście lub tablicy. Wyjaśnimy, jak to zrobić w tym poście.
Jak posortować listę w Pythonie
Możesz sortować elementy na liście lub w tablicy za pomocą języka Python sortować() metoda.
Plik sortować() metoda w Pythonie przyjmuje dwa opcjonalne argumenty, a składnia wygląda następująco:
list.sort (key = function, reverse = True / False)
Domyślnie sortować() metoda porządkuje pozycje listy w porządku rosnącym:
myList = [„C”, „D”, „B”, „A”, „F”]
myList.sort ()
print (myList)
Wyjście: [„A”, „B”, „C”, „D”, „F”]
Możesz użyć odwrócić argument, aby wyświetlić listę w porządku malejącym:
myList = [„C”, „D”, „B”, „A”, „F”]
myList.sort (reverse = True)
print (myList)
Wynik: [„F”, „D”, „C”, „B”, „A”]
Możesz również uporządkować elementy na liście według długości każdego ciągu.
Aby to zrobić, utwórz funkcję i przekaż ją do pliku sortować() metoda przy użyciu opcjonalnego klucz argument:
myList = ["MUO", "Python", "JavaScript", "Sort", "Sortlists"]
def sortLength (element):
return len (pozycja)
myList.sort (reverse = True, key = sortLength)
print (myList)
Wynik: [„JavaScript”, „Sortlists”, „Python”, „Sort”, „MUO”]
Jak posortować listę słowników w Pythonie
Możesz użyć sortować() metodę, aby również posortować listę słowników.
Posortujmy zadania w poniższym słowniku według ich czasu:
myArray = [
{"Zadanie": "Pranie", "Godzina": 12.00},
{"Zadanie": "Piłka nożna", "Czas": 24.00},
{"Zadanie": "Sortuj", "Czas": 17.00},
{"Zadanie": "Kod", "Godzina": 15.00}
]
def sortByTime (element):
zwracana pozycja ["Czas"]
myArray.sort (key = sortByTime)
print (myArray)
Ponieważ wartości czasu są liczbami całkowitymi, powyższy blok kodu przestawia tablicę na podstawie czasu zadania.
Związane z: Jak działają tablice i listy w Pythonie
Oprócz sortowania powyższej tablicy według czasu, możesz również uporządkować ją alfabetycznie, używając zadań, które są ciągami znaków.
Aby posortować według ciągu w przykładowej tablicy, wystarczy zmienić Czas w nawiasie kwadratowym do Zadanie:
myArray = [
{"Zadanie": "Pranie", "Godzina": 12.00},
{"Zadanie": "Piłka nożna", "Czas": 24.00},
{"Zadanie": "Sortuj", "Czas": 17.00},
{"Zadanie": "Kod", "Godzina": 15.00}
]
def sortByTime (element):
zwróć element ["Zadanie"]
myArray.sort (key = sortByTime)
print (myArray)
Możesz również sortować zadania w odwrotnej kolejności, ustawiając odwrócić do prawdy:
myArray.sort (key = sortByTime, reverse = True)
Możesz też użyj funkcji lambda z sortować() dla bardziej przejrzystego kodu:
myArray.sort (key = lambda getTime: getTime ["Time"])
print (myArray)
Jak sortować zagnieżdżoną listę w języku Python
Możesz sortować zagnieżdżoną listę krotek według indeksu każdego zagnieżdżonego elementu na tej liście.
Na przykład poniższy kod używa trzeciego elementu w każdej krotce do sortowania listy w porządku rosnącym:
Lista = [(3, 19, 20), (2, 6, 0), (1, 8, 15), (7, 9, 3), (10, 19, 4)]
def sortByThirdIndex (a):
zwrócić [2]
Alist.sort (klucz = sortByThirdIndex)
print (Lista)
Wyjście: [(2, 6, 0), (7, 9, 3), (10, 19, 4), (1, 8, 15), (3, 19, 20)]
W wynikach powyżej trzecia pozycja w każdej krotce rośnie kolejno od zera do dwudziestu.
Zauważ, że to nie działa z zestawem Pythona, ponieważ nie możesz go zindeksować. Ponadto każde gniazdo na liście musi należeć do tego samego typu danych.
Związane z: Co to jest zestaw w Pythonie i jak go utworzyć
Aby jednak uporządkować dane wyjściowe w porządku malejącym:
Alist.sort (klucz = getIndex, reverse = True)
print (Lista)
Wyjście: [(3, 19, 20), (1, 8, 15), (10, 19, 4), (7, 9, 3), (2, 6, 0)]
Zobaczmy, jak to wygląda z rozszerzeniem lambda funkcjonować również:
Lista = [(3, 19, 20), (2, 6, 0), (1, 8, 15), (7, 9, 3), (10, 19, 4)]
nowaLista = sortowane (Lista, klucz = lambda a: a [2])
print (nowa lista)
Wyjście: [(2, 6, 0), (7, 9, 3), (10, 19, 4), (1, 8, 15), (3, 19, 20)]
Jak sortować listę przy użyciu metody Sorted ()
Alternatywnie możesz użyć posortowane () metoda.
Chociaż działa podobnie do sortować() metoda, tworzy nową posortowaną listę bez modyfikowania oryginału. Nieco inny jest też układ składni.
Składnia posortowane () generalnie wygląda następująco:
sortowane (lista, klucz = funkcja, odwrócona = prawda / fałsz)
Aby posortować listę przy użyciu rozszerzenia posortowane () musisz utworzyć nową zmienną dla posortowanej listy:
Lista = [(3, 19, 20), (2, 6, 0), (1, 8, 15), (7, 9, 3), (10, 19, 4)]
def getIndex (a):
zwrócić [2]
nowaLista = sortowane (Lista, klucz = getIndex)
print (nowa lista)
Wyjście: [(2, 6, 0), (7, 9, 3), (10, 19, 4), (1, 8, 15), (3, 19, 20)]
Plik posortowane () metoda akceptuje również plik lambda funkcjonować jako jego klucz:
Lista = [(3, 19, 20), (2, 6, 0), (1, 8, 15), (7, 9, 3), (10, 19, 4)]
nowaLista = sortowane (Lista, klucz = lambda a: a [2])
print (nowa lista)
Wyjście: [(2, 6, 0), (7, 9, 3), (10, 19, 4), (1, 8, 15), (3, 19, 20)]
Gdzie można zastosować sortowanie list?
Do efektywnego programowania niezbędne jest solidne zrozumienie metody sortowania w Pythonie. Pozwala kontrolować sposób przechodzenia listy lub tablicy i zawsze można ją zastosować w rzeczywistych projektach. Na przykład sortowanie listy w Pythonie może się przydać podczas przestawiania danych z API lub bazy danych, więc ma to większy sens dla użytkownika końcowego.
Pracujesz z listami w Pythonie? Oto, co musisz wiedzieć o używaniu funkcji dołączania w języku Python podczas pracy z listami.
Czytaj dalej
- Programowanie
- Pyton
- Samouczki kodowania
Idowu jest pasjonatem wszystkiego, co inteligentne technologie i produktywność. W wolnym czasie bawi się kodowaniem, nudzi się szachownicą, ale uwielbia też od czasu do czasu oderwać się od rutyny. Jego pasja do wskazywania ludziom drogi wokół nowoczesnych technologii motywuje go do pisania więcej.
Zapisz się do naszego newslettera
Dołącz do naszego biuletynu, aby otrzymywać wskazówki techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!
Jeszcze jeden krok…!
Potwierdź swój adres e-mail w wiadomości e-mail, którą właśnie wysłaliśmy.