Есть ли короткая команда для 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.