是否有更简洁,高效或简单的pythonic方式来执行以下操作?
def product(list):
p = 1
for i in list:
p *= i
return p
Run Code Online (Sandbox Code Playgroud)
编辑:
我实际上发现这比使用operator.mul要快一些:
from operator import mul
# from functools import reduce # python3 compatibility
def 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 r
import timeit
a = range(50)
b = range(1,50)#no zero
t = timeit.Timer("with_lambda(a)", "from __main__ import with_lambda,a")
print("with lambda:", t.timeit())
t = timeit.Timer("without_lambda(a)", "from __main__ …Run Code Online (Sandbox Code Playgroud) python ×1