Рубрики
Без рубрики

Урок на месте сортировки: разница между сортировкой () и .sort () и почему это имеет значение.

Я добровольно делал как наставник по упражнениям. Это сайт для выполнения наставных упражнений, … Помечено Python, начинающим.

Я доброволбился как наставник на упражнения Отказ Это веб-сайт для выполнения ученых наставных упражнений, и я обещаю, что это ни в коем случае не сатанин.

[Оповещение о спойлере] Если вы предпочитаете попытаться попытаться проблему, прежде чем увидеть решение, представленное ниже, отправляйтесь на упражнения Отказ

Как я пишу предложениям студентам, которые представили решения, я оказываюсь, что другие люди могут захотеть прочитать. По этой причине я собираюсь представить представительное решение, содержащее проблему, которое я недавно обратился.

Вкратце, проблема заключалась в том, чтобы взять список результатов видеоигр одного игрока и написать три функции: один, который возвращает последний балл, который возвращает личный лучший балл, и тот, который возвращает список трех лучших оценок в порядке.

Во-первых, вот каноническое решение, согласно руководству наставника.

    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”