在Python中是否有x的n根的缩写?

在Python中是否有x的n根的缩写?,python,math,operators,Python,Math,Operators,简单的语法问题 在数学中,如果我有两个数字3和2,我想计算3到2的幂,那么不需要符号,但我写两个小的。在Python中,此操作似乎由**语法表示 >>> 3**2 9 如果我想去另一个方向,计算9的第二个根,那么在数学中,我需要使用一个符号: Python中是否有一个类似于**的简写符号来实现这一点,即29。或者我需要使用math模块吗?x的第n个根是x^(1/n),因此您可以执行9**(1/2.0)来查找例如9的第二个根。通常,可以将x的第n个根计算为: x**(1/fl

简单的语法问题

在数学中,如果我有两个数字3和2,我想计算3到2的幂,那么不需要符号,但我写两个小的。在
Python
中,此操作似乎由
**
语法表示

>>> 3**2
9
如果我想去另一个方向,计算9的第二个根,那么在数学中,我需要使用一个符号:


Python中是否有一个类似于
**
的简写符号来实现这一点,即
29
。或者我需要使用
math
模块吗?

x的第n个根是
x^(1/n)
,因此您可以执行
9**(1/2.0)
来查找例如9的第二个根。通常,可以将x的第n个根计算为:

x**(1/float(n))
您还可以执行
1.0/n
而不是
1/float(n)
。它是必需的,因此结果是一个
float
而不是
int
基本上sqrt(9)等于9^.5

>>>9**.5
3.0

有。只是
**
=)

任何n次方根都是按
1/n
求幂,所以要得到9的平方根,你可以使用
9**(1/2)
(或
9**0.5
)来得到立方根,你可以使用
9**(1/3)
(我们不能用更简单的分数来写),然后得到n次方根,
9**(1/n)

还请注意,从Python 3开始,不再需要向整数添加句点以使其成为浮点。说
1/3
的方式与您实际期望的方式一样,结果是
0.333…
,而不是零。对于Python的旧版本,您必须记住使用该时间段(但也非常奇怪为什么要使用编程语言的旧版本)

另外:
x**(n**-1)
,它与您应该执行的
x**(1/float(n))

16**(0.5) #If you print it, you get 4, So you can use this formula.

如果您希望在功能上应用此操作,而不是使用中缀运算符(符号
**
),则可以将基和指数作为参数传递给
pow
函数:

In [23]: (9**(0.5)) == pow(9, 0.5)
Out[23]: True
我也喜欢为它寻找新的用途,尽管这与其说是一个繁重的解决方案,不如说是一种乐趣。但你可以通过以下方式有效地制作自己的个人标志:

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

函数接受两个参数

您也可以使用一些对数:

第n根:

 X = exp(log(n)/x)

知道
x
1/n
的幂与
x
n
根相同可能会有帮助。确保在Python 2中使用
**1.0/n
而不是
**1/n
,因为整数除法。一旦你看到答案是多么简单,你知道为什么没有专门的语法了。@MarkRansom-我知道Mark:虽然这是我差点删除的问题之一-然后离开一两分钟-结果问题简单(愚蠢)导致了一些有趣的答案。@MarkRansom为我辩护,尽管Mark-在数学中我们不写9^(1/2)当我们需要9的平方根时-我想可能有一个语法等价于数学范数。在Python 3中,不需要强制结果为浮点,它会自动发生。@MarkRansom谢谢-我正在使用
3.2.2
,看看你的意思
>8**(1/3)=2
或do
x**(1./n)
在Python2.x上打印1,因为1/2返回0。@NacibNeme-在3.2.2中可以使用:
Python2.7.5+(默认,2013年9月17日,17:31:54)[GCC 4.8.1]在linux2上键入“帮助”、“版权”、“信用”或“许可证”以获取更多信息。>>16**(0.5)4.0>>
然而,它并不比
x**(1./n)
短,而且可能精度稍低(但同样,计算n次根的整个方法都不是最优的)。对不起,这是另一种方法-exp(log(x)/n)
 X = exp(log(n)/x)