Magnet particules in boxes(4kyu) codewars

人生苦短,我选python

自己写的

from decimal import *
getcontext().prec = 20
def doubles(maxk, maxn):
    d = Decimal(0)
    for k in range(1,maxk+1):
        for n in range(1,maxn+1):
            d += (1)/Decimal((k*((n+1)**(2*k))))
    print(float(d))

doubles(maxk = 10, maxn = 1000)
#结果:0.6921486500921955

给的实例运行时间:
在这里插入图片描述
最后提交一直超时。。。
然后就弱弱地看大神的代码去了(顺带看了眼评论区:
this is the ever easy ‘4 kyu’ problem i have seen)
。。。好尴尬

大神的(用了列表推导式)

def doubles(maxk, maxn):
    return sum([ sum([ (n+1)**(-2*k) for n in range(1, maxn+1) ])/k for k in range(1, maxk+1) ])
print(doubles(maxk = 10, maxn = 1000))
结果:0.6921486500921933

运行时间:
在这里插入图片描述
好的吧,差别出来了,这才4个例子,就差了快两倍时间。

好的吧,才疏学浅,继续加油!!以后就尽量用列表推导式了(抱拳)。
ps:推荐文章:“Python|为什么列表推导式会更快”
https://www.jianshu.com/p/03f9dd662427

猜你喜欢

转载自blog.csdn.net/qq_43402639/article/details/93073557