为了账号安全,请及时绑定邮箱和手机立即绑定

返回清单的产品

返回清单的产品

慕田峪7331174 2019-11-26 14:18:21
有没有更简洁,有效或简单的pythonic方法来执行以下操作?def product(list):    p = 1    for i in list:        p *= i    return p编辑:我实际上发现这比使用operator.mul快一点:from operator import mul# from functools import reduce # python3 compatibilitydef with_lambda(list):    reduce(lambda x, y: x * y, list)def without_lambda(list):    reduce(mul, list)def forloop(list):    r = 1    for x in list:        r *= x    return rimport timeita = range(50)b = range(1,50)#no zerot = timeit.Timer("with_lambda(a)", "from __main__ import with_lambda,a")print("with lambda:", t.timeit())t = timeit.Timer("without_lambda(a)", "from __main__ import without_lambda,a")print("without lambda:", t.timeit())t = timeit.Timer("forloop(a)", "from __main__ import forloop,a")print("for loop:", t.timeit())t = timeit.Timer("with_lambda(b)", "from __main__ import with_lambda,b")print("with lambda (no 0):", t.timeit())t = timeit.Timer("without_lambda(b)", "from __main__ import without_lambda,b")print("without lambda (no 0):", t.timeit())t = timeit.Timer("forloop(b)", "from __main__ import forloop,b")print("for loop (no 0):", t.timeit())给我('with lambda:', 17.755449056625366)('without lambda:', 8.2084708213806152)('for loop:', 7.4836349487304688)('with lambda (no 0):', 22.570688009262085)('without lambda (no 0):', 12.472226858139038)('for loop (no 0):', 11.04065990447998)
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 340 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信