Про ссылки при сортировке
У меня есть список чисел и я делаю sorted_list = my_list.sort(). Почему в sorted_list оказывается None, а сам my_list - отсортирован? В чём разница между методами .sort() и функцией sorted() и когда какой использовать?
1 ответ
.sort() — метод списка. Сортирует сам список на месте и возвращает None. Это соглашение Python: методы, которые меняют объект, ничего не возвращают — чтобы вы случайно не решили, будто получили копию. Ваш sorted_list = my_list.sort() ровно поэтому и поймал None.
sorted() — отдельная функция. Исходник не трогает, возвращает новый отсортированный список. Заодно принимает любую последовательность: строку, кортеж, ключи словаря.
Выбор простой: старый порядок больше не нужен — my_list.sort(), память на копию не тратится. Нужны оба варианта или на входе не список — sorted(...). У обоих есть reverse=True и key=.