Сортировка списка с помощью метода list.sort() в Python

В этом уроке вы узнаете, как использовать метод Python 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)]
Похожие посты
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *