Я доброволбился как наставник на упражнения Отказ Это веб-сайт для выполнения ученых наставных упражнений, и я обещаю, что это ни в коем случае не сатанин.
[Оповещение о спойлере] Если вы предпочитаете попытаться попытаться проблему, прежде чем увидеть решение, представленное ниже, отправляйтесь на упражнения Отказ
Как я пишу предложениям студентам, которые представили решения, я оказываюсь, что другие люди могут захотеть прочитать. По этой причине я собираюсь представить представительное решение, содержащее проблему, которое я недавно обратился.
Вкратце, проблема заключалась в том, чтобы взять список результатов видеоигр одного игрока и написать три функции: один, который возвращает последний балл, который возвращает личный лучший балл, и тот, который возвращает список трех лучших оценок в порядке.
Во-первых, вот каноническое решение, согласно руководству наставника.
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”