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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值