python之map&reduce
2019-11-22 本文已影响0人
贾老板MC
reduce应用
——————————————————————————————————————————
python3.+中reduce()已从全局空间中去除,它现在被放置在 functools 模块里,使用前需导入。
from functools import reduce
reduce使用示例(取出列表中的最大值和最小值)
- 常规方法
import time
def min_max(d):
min1 = d[0]
max1 = d[0]
for i in d:
if i <= min1:
min1 = i
if i >= max1:
max1 = i
return (min1, max1)
#
a= time.time()
f = min_max(list(range(100000)))
print(f)
#
b = time.time()
print("总耗时 : %s " %str(b-a)) #0.00900125503540039s
print("________________________________________________")
- 使用reduce来尝试
import time
from functools import reduce
def findMinAndMax(L):
#
#
def Min_min(x, y ):
if x<y:
return x
else:
return y
def Max_max(x, y ):
if x<y:
return y
else:
return x
return (reduce(Min_min,L),reduce(Max_max,L))
a= time.time()
f = findMinAndMax(list(range(100000)))
print(f)
b = time.time()
print("总耗时 : %s " %str(b-a)) #0.00914764404296875s
print("________________________________________________")
小结
在使用reduce的函数中,由于代码有些伪代码,所以效率偏低,此处仅为使用说明;reduce主要解决类似于f(f(f(x)))...类的问题,使用reduce处理问题可以把重心放在基础逻辑上,避免了自上而下的抽象展开。
——————————————————————————————————————————