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
本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。