Сортировка списка с помощью метода list.sort() в Python
В этом уроке вы узнаете, как использовать метод Python List sort() для сортировки списка.
- Знакомство с методом List sort() в Python
- Примеры метода Python List sort()
- 1) Использование метода sort() для сортировки списка строк
- 2) Для сортировки списка чисел
- 3) Метод List sort() в сортировке списка кортежей
- Использование лямбда-выражения
Знакомство с методом List sort() в Python
Чтобы отсортировать список, используйте метод sort():
list.sort()
Метод sort() сортирует исходный список на месте. Это означает, что метод sort() изменяет порядок элементов в списке. По умолчанию метод sort() сортирует элементы списка с помощью оператора «меньше»(<). Другими словами, он ставит низшие элементы перед высшими.
Чтобы отсортировать элементы от большего к меньшему, вы передаете аргументverse=True методу sort() следующим образом:
list.sort(reverse=True)
Примеры метода Python List sort()
Давайте рассмотрим несколько примеров использования метода sort().
1) Использование метода sort() для сортировки списка строк
Если список содержит строки, метод sort() сортирует элементы строки в алфавитном порядке.
В следующем примере метод sort() используется для сортировки элементов списка гостей в алфавитном порядке:
guests = ['James', 'Mary', 'John', 'Patricia', 'Robert', 'Jennifer'] guests.sort() print(guests)
Выход:
['James', 'Jennifer', 'John', 'Mary', 'Patricia', 'Robert']
А в следующем примере используется метод sort() с аргументом reverse=True для сортировки элементов в списке гостей в обратном алфавитном порядке:
guests = ['James', 'Mary', 'John', 'Patricia', 'Robert', 'Jennifer'] guests.sort(reverse=True) print(guests)
Выход:
['Robert', 'Patricia', 'Mary', 'John', 'Jennifer', 'James']
2) Для сортировки списка чисел
Если список содержит числа, метод sort() сортирует числа от наименьшего к наибольшему.
В следующем примере метод sort() используется для сортировки чисел в списке оценок от наименьшего к наибольшему:
scores = [5, 7, 4, 6, 9, 8] scores.sort() print(scores)
Выход:
[4, 5, 6, 7, 8, 9]
Чтобы отсортировать числа от большего к меньшему, вы используете sort(reverse=True) следующим образом:
scores = [5, 7, 4, 6, 9, 8] scores.sort(reverse=True) print(scores)
Выход:
[9, 8, 7, 6, 5, 4]
3) Метод List sort() в сортировке списка кортежей
Предположим, что у вас есть такой список кортежей:
companies = [('Google', 2019, 134.81), ('Apple', 2019, 260.2), ('Facebook', 2019, 70.7)]
И вы хотите отсортировать список компаний по доходам от самого высокого до самого низкого. Что нужно сделать:
- Сначала укажите ключ сортировки и передайте его методу sort(). Чтобы определить ключ сортировки, вы создаете функцию, которая принимает кортеж и возвращает элемент, по которому вы хотите отсортировать:
def sort_key(company): return company[2]
Эта функция sort_key() принимает кортеж с именем Company и возвращает третий элемент.
Обратите внимание, что компания представляет собой кортеж, например(«Google», 2019, 134.81). И компания[2] в данном случае ссылается на выручку как 134,81.
- Во-вторых, передайте функцию sort_key методу sort():
companies.sort(key=sort_key, reverse=True)
Метод sort() будет использовать для сравнения значение, возвращаемое функцией sort_key().
Обратите внимание, что вы просто передаете имя функции без круглых скобок в метод sort():
companies = [('Google', 2019, 134.81), ('Apple', 2019, 260.2), ('Facebook', 2019, 70.7)] # define a sort key def sort_key(company): return company[2] # sort the companies by revenue companies.sort(key=sort_key, reverse=True) # show the sorted companies print(companies)
Выход:
[('Apple', 2019, 260.2),('Google', 2019, 134.81),('Facebook', 2019, 70.7)]
Использование лямбда-выражения
Чтобы сделать код более кратким, Python позволяет вам определить функцию без имени со следующим синтаксисом:
lambda arguments: expression
Функция без имени называется анонимной функцией. И этот синтаксис называется лямбда-выражением.
Технически это эквивалентно следующей функции:
def name(arguments): return expression
В следующем примере лямбда-выражение используется для сортировки компаний по доходам от низкого к высокому:
companies = [('Google', 2019, 134.81), ('Apple', 2019, 260.2), ('Facebook', 2019, 70.7)] # sort the companies by revenue companies.sort(key=lambda company: company[2]) # show the sorted companies print(companies)
Выход:
[('Apple', 2019, 260.2),('Google', 2019, 134.81),('Facebook', 2019, 70.7)]