← Все вопросы

Про ссылки при сортировке

Задан 2 месяца назад25 просмотров1 ответ
0

У меня есть список чисел и я делаю sorted_list = my_list.sort(). Почему в sorted_list оказывается None, а сам my_list - отсортирован? В чём разница между методами .sort() и функцией sorted() и когда какой использовать?

1 ответ

1

.sort() — метод списка. Сортирует сам список на месте и возвращает None. Это соглашение Python: методы, которые меняют объект, ничего не возвращают — чтобы вы случайно не решили, будто получили копию. Ваш sorted_list = my_list.sort() ровно поэтому и поймал None.

sorted() — отдельная функция. Исходник не трогает, возвращает новый отсортированный список. Заодно принимает любую последовательность: строку, кортеж, ключи словаря.

Выбор простой: старый порядок больше не нужен — my_list.sort(), память на копию не тратится. Нужны оба варианта или на входе не список — sorted(...). У обоих есть reverse=True и key=.

Ваш ответ

, чтобы ответить на вопрос.