Я доброволбился как наставник на упражнения Отказ Это веб-сайт для выполнения ученых наставных упражнений, и я обещаю, что это ни в коем случае не сатанин.
[Оповещение о спойлере] Если вы предпочитаете попытаться попытаться проблему, прежде чем увидеть решение, представленное ниже, отправляйтесь на упражнения Отказ
Как я пишу предложениям студентам, которые представили решения, я оказываюсь, что другие люди могут захотеть прочитать. По этой причине я собираюсь представить представительное решение, содержащее проблему, которое я недавно обратился.
Вкратце, проблема заключалась в том, чтобы взять список результатов видеоигр одного игрока и написать три функции: один, который возвращает последний балл, который возвращает личный лучший балл, и тот, который возвращает список трех лучших оценок в порядке.
Во-первых, вот каноническое решение, согласно руководству наставника.
def latest(scores): return scores[-1] def personal_best(scores): return max(scores) def personal_top_three(scores): return sorted(scores, reverse=True)[:3]
Стоит распаковывать personal_top_three ()
Как это немного плотно. отсортировано (баллы)
Возвращает отсортированную копию списка в порядке убывания. Это затем питается [: 3], что выбирает первые три элемента (индексы 0-2, включительно) и возвращает их.
Теперь, вот представительское решение, которое напоминает некоторые представления, которые я видел.
def latest(scores): return scores[-1] def personal_best(scores): return max(scores) def personal_top_three(scores): scores.sort(reverse=True) return scores[:3]
Найдите минутку и обратите внимание на различия.
Это хорошее решение, но есть проблема. Вот что я бы сказал гипотетическому студенту, который написал это.
Во-первых, я рекомендую быть осторожным с .sort ()
Потому что это меняет список оценки
На месте, что означает, что значения, хранящиеся в списке оценки
будет переоформлен. Это может привести к неожиданному поведению, если баллы используются в другом месте. Например, представьте, что кто-то называется Personal_top_Tree (баллы)
Тогда называется Последние (баллы)
. В этом случае Последние (баллы)
может дать неожиданные результаты. Если у вас нет веских причин сортировки на месте, я рекомендую использовать Сортировка (баллы)
, который возвращает отсортированную копию оценки
, уезжая оценки
сама без изменений. Как дополнительный бонус использования отсортировано ()
в Personal_best ()
Это позволит вам иметь только одну строку функционального тела. Вы видите почему?
Я надеюсь, что вы нашли это полезным, и что он пробудил ваш интерес к междувке. Я призываю вас попробовать его как студент, наставник или оба!
Оригинал: “https://dev.to/ekand/a-lesson-in-in-place-sorting-the-difference-between-sorted-and-sort-and-why-it-matters-32o8”