有沒有更簡潔,有效或簡單的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)
返回清單的產品
慕田峪7331174
2019-11-26 14:18:21