Python笔记_第四篇_高阶编程_高阶函数_1.map和reduce

1. map()函数

  原型:map(fn,lsd)

  参数1是函数

  参数2是序列

  功能:将传入的函数一次作用在序列中的每一个元素。并把结果作为一个新的Iterator返回。其实map函数就是一个for循环查找。需要functools库。

  图示:

 

  实例1:

# 实例1:
from functools import reduce
# python内置的map函数 def chr2int(str):
return {"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9}[str] # return后面哪一窜表示将单个字符转换成对应的字面量整数,按照键去取值。 list1 = ["2","1","6","5"] res = map(chr2int,list1) # 运行过程:[chr2int("2") chr2int("1") chr2int("6") chr2int("5")] print(res) # 惰性列表 print(list(res)) # 显式转换成列表 # [2, 1, 6, 5]

  实例2:将整数元素的序列,转换为字符串型。

# 实例2:
# 将整数元素的序列,转换为字符串型
# [1,2,3,4] --- ["1","2","3","4"]
l = map(str,[1,2,3,4])
print(l)
print(list(l))
# ['1', '2', '3', '4']

 

2. reduce()函数

  原型:reduce(fn,lsd)

  参数1为函数

  参数2为列表

  功能:一个函数作用在序列上,这个函数必须接受两个参数,reduce把结果继续和序列的下一个元素累计计算。相当于一个递归算法。需要functools库。

  举例:

  reduce(f,[a,b,c,d])

  f(f(a,b),c)

  f(f(f(a,b),c),d)

  实例1:

  1 + 2

  1 + 2 + 3

  1 + 2 + 3

  1 + 2 + 3 + 4

  1 + 2 + 3 + 4 + 5

# 实例1:
# 1 + 2
# 1 + 2 + 3
# 1 + 2 + 3 + 4
# 1 + 2 + 3 + 4 +5
list2 = [1,2,3,4,5]

def mySum(x,y):
    return x + y

r = reduce(mySum,list2)
print("r = ",r)
# r =  15

  实例2:将字符串转换成对应的字面量数字。

# 实例2:
# 将字符串转成成对应字面量数字
# 比如:1356
# 0 * 10 + 1 = 1
# 1 * 10 + 3 = 13
# 13 * 10 + 5 = 135
# 135 * 10 + 5 = 1356
def str2int(str):
    def fc(x,y):
        return x * 10 + y
    def fs(str):
        return {"0": 0, "1": 1, "2": 2, "3": 3, "4": 4, "5": 5, "6": 6, "7": 7, "8": 8, "9": 9}[str]
    return reduce(fc,map(fs,list(str)))

print(str2int("1356"))
# 1356

 

from functools import reduce
posted @ 2019-05-21 02:14  时海涛|Thomas  阅读(253)  评论(0编辑  收藏  举报