Сортировка с помощью sort(), sorted() в Python
avatar
7 | (offline)
❤️‍🔥Notehunter Developer
Добавлено:
Категория: Основы «Python»
Комментариев: 0

Функция sorted() и метод sort() в Python делают по сути одно и тоже - сортируют, их главное отличие, это то, что sort() применим только к спискам, а функция sorted() применяется к любому итерируемому объекту: множеству, кортежу, словарю, строке и т.д.

Синтаксис sort():

list.sort(self, key=None, reverse=False)

Аргументы:

  • Применяется метод к списку, т.е список передает сам себя (self).
  • В key мы можем передать пользовательскую функцию для сортировки.
  • Флаг reverse позволяет вывести результат в обратном порядке.

Синтаксис sorted():

sorted(iterable, /, *, key=None, reverse=False)

Аргументы:

  • iterable - передаем итерируемый объект.
  • В key мы можем передать пользовательскую функцию для сортировки.
  • Флаг reverse позволяет вывести результат в обратном порядке.

Рассмотрим примеры для sort():

# Неупорядоченный список
nums_list = [2, 3, 1, 5, 4, 7, 6]
# Упорядоченный список
nums_list.sort()

# Выводим список
print(nums_list)

# Список в обратную сторону
nums_list.sort(reverse=True)

# Выводим список
print(nums_list)

# Своя функция сортировки

def func_sort(x):
    return x % 2

# Применяем функцию к сортировке
nums_list.sort(key=func_sort)

# Выводим список
print(nums_list)

Результаты:

[1, 2, 3, 4, 5, 6, 7]
[7, 6, 5, 4, 3, 2, 1]
[6, 4, 2, 7, 5, 3, 1]

В этом примере мы рассмотрели как использовать sort(), reverse и key

Рассмотрим примеры для sorted():

# Неупорядоченный кортеж
numbers_tuple = (1, 4, 3, 2)

# Неупорядоченное множество
numbers_set = {5, 5, 4, 3, 1, 2, 3, 0}

# Сортируем кортеж
numbers_tuple_sorted = sorted(numbers_tuple)

# Сортируем множество
numbers_set_sorted = sorted(numbers_set)

# Выводим информацию
print(numbers_tuple_sorted, numbers_set_sorted)

Результаты:

>>> [1, 2, 3, 4] 
>>> [0, 1, 2, 3, 4, 5]

Примечание: не забываем, что множество сохраняет лишь уникальные значения, поэтому повторяющиеся значения удалились.

Пример со строками:

# Строка из чисел
string_number_value = '96312457'

# Строковое значение
string_value = 'Я люблю сортировку!'

# Сортируем строковые числа
sorted_string_number = sorted(string_number_value)

# Сортируем строковое значение
sorted_string = sorted(string_value)

# Выводим информацию

print(sorted_string_number, sorted_string)

Результат:

>>> ['1', '2', '3', '4', '5', '6', '7', '9'] 
>>> [' ', ' ', '!', 'Я', 'б', 'в', 'и', 'к', 'л', 'л', 'о', 'о', 'р', 'р', 'с', 'т', 'у', 'ю', 'ю']

Сортировка с применением lambda функции:

Хотим узнать по возрастанию цены на фрукты

fruit = {
    ('Апельсины', 75),
    ('Мандарины', 50),
    ('Ананасы', 120),
    ('Бананы', 70)
}

sorted_fruit = sorted(fruit, key=lambda x: x[1])

print(sorted_fruit)

Результат:

[('Мандарины', 50), ('Бананы', 70), ('Апельсины', 75), ('Ананасы', 120)]

А если по убыванию, добавим -:

fruit = {
    ('Апельсины', 75),
    ('Мандарины', 50),
    ('Ананасы', 120),
    ('Бананы', 70)
}

sorted_fruit = sorted(fruit, key=lambda x: -x[1])

print(sorted_fruit)

Результат:

[('Ананасы', 120), ('Апельсины', 75), ('Бананы', 70), ('Мандарины', 50)]
Теги записи: Python, Основы Python, sorted(), sort(),
Комментарии к статье 0
Комментариев нет
Форма добавления комментария (необходима регистрация)