6 способов найти модуль числа в Python 3
Вступление
Всем начинающим кодерам привет!
Модуль числа... Это, казалось бы, простая вещь... да, так оно и есть. Тем не менее - всегда интересно поэкспериментировать и по-новому взглянуть на простое.
Сегодня я покажу вам 6 способов найти модуль числа в Python 3. Я не стал добавлять сюда совсем абсурдные вещи, но немного абсурдности здесь все же будет.
1 способ
Для начала самое очевидное. Проверяем отрицательное число (назовем его x) или положительное, т.е. <0 или нет. В случае отрицательного значения x, его нужно умножить на -1. Можно так:
А можно заменить умножение унарным минусом:
2 способ
Самое короткое решение в нашей статье - найти максимум между x и -x. Таким образом результат всегда будет положительным:
3 способ
Здесь мы проверяем строку на наличие в ней минуса. Изначально я хотел использовать метод isdigit(), но потом я понял, что метод не считает точку частью числа, поэтому для float в строке метод возвращает False. Поэтому:
4 способ
Этот способ использует условную инструкцию из предыдущей функции, но использует срез, чтобы избавиться от минуса. 3 строка выглядит не очень, приходится дважды менять тип данных результата. По-моему - это ухудшенная версия 3 способа:
5 способ
Тут мы будем использовать факт того, что операция квадратного корня в Python всегда возвращает положительный результат. Эту операцию не обязательно брать из библиотеки Math, можно просто возвести число в с степень 0.5. Итак:
6 способ
Здесь мы используем операции со строками, как в 4 способе. Отличие в том, что мы не проверяем строку на наличие минуса. Мы убираем уго, есть он в строке или нет. Метод replace() позволяет убрать все повторения одного символа, что для нас избыточно, но с нулем повторений он тоже работает:
Примечание: говоря про положительные значения, правильнее сказать - положительные или нулевые, но я решил не засорять текст такой мелочью.
Статистика быстродействия
Подведем итоги, узнаем - что же быстрее работает. О том, как замерить время работы программы, я, возможно, расскажу в одной из следующих статей. Ну а пока что приведу статистические данные.
Я измерил время работы данного куска кода, где i - одна из 6 функций.
И вот что получилось:
Что у нас по итогу? Худший результат показал 4 способ, неудивительно.Самый очевидный способ - первый, на 2 месте. С большим отрывом лидирует 5 вариант, 100000 повторений за 0.79 сек! Математика быстрее логического оператора if и операций со строками.
Заключение
Я надеюсь, что вам была интересна данная статья, и вы разобрались в теме. Если хотите меня дополнить - пишите в комментариях. Удачи в мире IT!
Извините за мыльную картинку, диаграмму в ворде делал и в пайнт копировал. В следующий раз попытаюсь решить эту проблему