Главная страница » Sorted и sort python отличие

Sorted и sort python отличие

В Python sorted() и sort() — это две разные функции (точнее, sort() — это метод списка), используемые для сортировки элементов, но у них есть ключевые различия:

Тип: sorted() является Встроенной функцией, а sort() является Методом списка. Возвращаемое значение:

    sorted() Возвращает новый отсортированный список, оставляя исходный итерируемый объект без изменений. sort() Сортирует список на месте (in-place), то есть изменяет исходный список и Возвращает None.

Применимость:

    sorted() может быть использована с Любым итерируемым объектом (списки, кортежи, строки, множества, словари и т. д.). Она всегда возвращает список. sort() может быть вызвана Только на объектах типа List (список).

Давайте рассмотрим примеры:

Sorted()

Python

# Пример с list

My_list = [3, 1, 4, 1, 5, 9, 2]

Sorted_list = sorted(my_list)

Print(f"Исходный список: {my_list}") # Вывод: Исходный список: [3, 1, 4, 1, 5, 9, 2]

Print(f"Отсортированный список (sorted): {sorted_list}") # Вывод: Отсортированный список (sorted): [1, 1, 2, 3, 4, 5, 9]

# Пример с tuple

My_tuple = (3, 1, 4, 1, 5)

Sorted_tuple_as_list = sorted(my_tuple)

Print(f"Исходный кортеж: {my_tuple}")

Print(f"Отсортированный кортеж (как список): {sorted_tuple_as_list}")

# Вывод: Отсортированный кортеж (как список): [1, 1, 3, 4, 5]

# Пример со string

My_string = "python"

Sorted_string_as_list = sorted(my_string)

Print(f"Исходная строка: {my_string}")

Print(f"Отсортированная строка (как список символов): {sorted_string_as_list}")

# Вывод: Отсортированная строка (как список символов): [‘h’, ‘n’, ‘o’, ‘p’, ‘t’, ‘y’]

# Пример с set

My_set = {3, 1, 4, 2}

Sorted_set_as_list = sorted(my_set)

Print(f"Исходное множество: {my_set}")

Print(f"Отсортированное множество (как список): {sorted_set_as_list}")

# Вывод: Отсортированное множество (как список): [1, 2, 3, 4]

# Пример с dictionary (сортирует по ключам)

My_dict = {‘b’: 2, ‘a’: 1, ‘c’: 3}

Sorted_dict_keys = sorted(my_dict)

Print(f"Исходный словарь: {my_dict}")

Print(f"Отсортированные ключи словаря: {sorted_dict_keys}")

# Вывод: Отсортированные ключи словаря: [‘a’, ‘b’, ‘c’]

Sort()

Python

My_list = [3, 1, 4, 1, 5, 9, 2]

Print(f"Исходный список до sort(): {my_list}") # Вывод: Исходный список до sort(): [3, 1, 4, 1, 5, 9, 2]

Result_of_sort = my_list. sort() # Сортирует список на месте

Print(f"Список после sort(): {my_list}") # Вывод: Список после sort(): [1, 1, 2, 3, 4, 5, 9]

Print(f"Результат вызова sort(): {result_of_sort}") # Вывод: Результат вызова sort(): None

Важное замечание: Поскольку list. sort() возвращает None, Никогда не делайте так:

Python

# НЕПРАВИЛЬНО!

My_list = [3, 1, 2]

My_list = my_list. sort() # my_list станет None

Print(my_list) # Вывод: None

Общие Аргументы (Key И Reverse)

Обе функции, sorted() и sort(), принимают два необязательных аргумента:

    Key: Функция, которая будет вызвана для каждого элемента итерируемого объекта перед сравнением. Возвращаемое значение этой функции используется для сортировки. Reverse: Логическое значение (True или False). Если True, список будет отсортирован в порядке убывания (от большего к меньшему). По умолчанию False (сортировка по возрастанию).

Python

Words = ["banana", "apple", "cherry", "date"]

# Сортировка по длине слова

Sorted_by_length = sorted(words, key=len)

Print(f"По длине (sorted): {sorted_by_length}")

# Вывод: По длине (sorted): [‘date’, ‘apple’, ‘banana’, ‘cherry’]

# Сортировка в обратном алфавитном порядке

Words. sort(reverse=True)

Print(f"Обратный алфавитный (sort): {words}")

# Вывод: Обратный алфавитный (sort): [‘date’, ‘cherry’, ‘banana’, ‘apple’]

# Сортировка списка словарей по значению ключа ‘age’

People = [

{‘name’: ‘Alice’, ‘age’: 30},

{‘name’: ‘Bob’, ‘age’: 25},

{‘name’: ‘Charlie’, ‘age’: 35}

]

# Сортировка по возрасту

Sorted_by_age = sorted(people, key=lambda person: person[‘age’])

Print(f"По возрасту (sorted): {sorted_by_age}")

# Вывод: По возрасту (sorted): [{‘name’: ‘Bob’, ‘age’: 25}, {‘name’: ‘Alice’, ‘age’: 30}, {‘name’: ‘Charlie’, ‘age’: 35}]

Когда что использовать?

    Используйте Sorted(), когда:

      Вам нужен Новый отсортированный список, а исходный итерируемый объект должен остаться неизменным. Вам нужно отсортировать Любой итерируемый объект, не только список (например, кортеж, строку, множество, словарь).

    Используйте List. sort(), когда:

      Вы работаете со Списком. Вам не нужна копия, и вы хотите Изменить список на месте, чтобы сэкономить память или улучшить производительность для очень больших списков, где создание копии было бы нежелательно.

В большинстве случаев, если вы не уверены или вам просто нужна отсортированная версия, sorted() является более безопасным и гибким выбором.

Оставьте комментарий

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

Прокрутить вверх