Есть ли короткая команда для n-го корня из x в Python
Простой вопрос синтаксиса.
В математике, если у меня есть два числа 3 и 2, и я хочу рассчитать 3 по мощности 2, тогда символ не требуется, но я пишу два маленьких. В Python
эта операция представляется синтаксисом **
.
>>> 3**2
9
Если я хочу перейти в другое направление и вычислить второй корень из 9, то в математике мне нужно использовать символ:
![nth root of x]()
Есть ли короткий символ в Python, аналогичный **
, который достигает этого, т.е. 2<symbol>9
. Или мне нужно использовать модуль math
?
Ответы
Ответ 1
Ну, n-й корень из x
на самом деле x^(1/n)
, поэтому вы можете сделать 9**(1/2.0)
, чтобы найти второй корень из 9, например. В общем случае, чтобы найти n-й корень из x, просто выполните:
x**(1/float(n))
Вы также можете сделать 1.0/n
вместо 1/float(n)
. Это необходимо, чтобы результат был float
, а не int
.
Ответ 2
Также: x**(n**-1)
, который является таким же, но короче x**(1/float(n))
Ответ 3
Если вы предпочитаете применять эту операцию функционально, а не с помощью инфиксного оператора (символ **
), вы можете передать базу и экспоненту в качестве аргументов функции pow
:
In [23]: (9**(0.5)) == pow(9, 0.5)
Out[23]: True
Я также увлекаюсь поиском новых приложений для этого взлома Infix в Python, хотя это скорее развлечение, чем сверхмощное решение. Но вы могли бы эффективно создать свой собственный персонаж для этого, выполнив следующие действия:
class Infix:
def __init__(self, function):
self.function = function
def __ror__(self, other):
return Infix(lambda x, self=self, other=other: self.function(other, x))
def __or__(self, other):
return self.function(other)
def __rlshift__(self, other):
return Infix(lambda x, self=self, other=other: self.function(other, x))
def __rshift__(self, other):
return self.function(other)
def __call__(self, value1, value2):
return self.function(value1, value2)
root_of = Infix(lambda x,y: y**(1.0/x))
print 2 |root_of| 9
3.0
Ответ 4
В основном sqrt (9) эквивалентен 9 ^.5
>>>9**.5
3.0
Ответ 5
Есть. Это просто **
=)
Любой n-й корень - это возведение в степень 1/n
, поэтому, чтобы получить квадратный корень из 9, вы используете 9**(1/2)
(или 9**0.5
) для получения корня куба, вы используете 9 ** (1/3)
(который мы можем " t писать с более простой фракцией) и получить n-й корень, 9 ** (1/n)
.
Также обратите внимание, что с Python 3 добавление периодов к целым числам, чтобы сделать их поплавком, больше не требуется. Высказывание 1/3
работает так, как вы его ожидали, давая 0.333...
как результат, а не нуль. Для устаревших версий Python вам нужно будет запомнить этот период (но также критически удивляйтесь, почему вы используете устаревшую версию языка программирования)
Ответ 6
Вы должны сделать
16**(0.5) #If you print it, you get 4, So you can use this formula.