python长整数相乘_在python中将整数列表的子集相乘

当有很多方法可以做某事时,我会根据可读性或速度等标准来决定使用哪种代码。这里有一些代码表明use_loop和{}在速度方面大致相同(至少对于测试的值!)在import operator

import itertools

a=range(1,1000)

def use_loop(a,n):

result=1

for num in a[:n]:

result*=num

return result

def use_reduce(a,n):

return reduce(operator.mul, a[:n])

def use_reduce_lambda(a,n):

return reduce(lambda x,y: x*y, a[:n])

def use_islice_loop(a,n):

result=1

for num in itertools.islice(a,n):

result*=num

return result

def use_islice_reduce(a,n):

return reduce(operator.mul, itertools.islice(a,n))

if __name__=='__main__':

n=50

print(use_loop(a,n))

print(use_reduce(a,n))

print(use_reduce_lambda(a,n))

print(use_islice_loop(a,n))

print(use_islice_reduce(a,n))

以下是计时结果:

^{pr2}$

至少对于测试的a(1000)和n(50)的值,itertools.islice似乎对性能没有帮助。use_reduce_lambda明显慢于它的表亲use_reduce,后者使用operator.mul。但是,导入operator所需的时间没有包括在测试中。在

由于use_loop和{}看起来速度一样快,我建议使用reduce,因为它的简短、惯用的代码对于大多数python程序员来说应该是相当可读的。然而,在品味方面,我认为过于固执己见是不值得的。选择你最喜欢的,只是要始终如一。在

{14}不能再通过cdps}来访问{14},但不能再通过cdps}来访问。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值