python之map&reduce

2019-11-22  本文已影响0人  贾老板MC

reduce应用

——————————————————————————————————————————
python3.+中reduce()已从全局空间中去除,它现在被放置在 functools 模块里,使用前需导入。
from functools import reduce

reduce使用示例(取出列表中的最大值和最小值)

  1. 常规方法
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("________________________________________________") 
  1. 使用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处理问题可以把重心放在基础逻辑上,避免了自上而下的抽象展开。
——————————————————————————————————————————

map应用


上一篇 下一篇

猜你喜欢

热点阅读