以下为学习笔记:来自廖雪峰的官方网站
1.高阶函数:简单来说是一个函数里面嵌入另一个函数
2.python内建的了map()和reduce()函数
map()函数接收两参数,一个是函数,一个是Iterable. map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterable返回
例子:
#map函数def f(x): return x * xr = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9]) #map函数返回一个函数和一个Iterableprint r
#将数字作为字符串输出print(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9]))reduce()函数:把一个函数作用在一个序列【x1,x2,x3,...】上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累计计算,其效果就是reduce(f,[x1,x2,x3,x4])=f(f(f(x1,x2),x3),x4)3.练习题1:将名字规范化
def normalize(name): #规范名字的写法 name = name[0].upper() + (name[1:]).lower() return namer = map(normalize, ['LISA', 'adam', 'BaRt'])print r
练习题2:#python提供sum()函数可以接受一个list并求和,请编写一个prod()函数,可以接受一个list,并求和from functools import reducel = [3, 5, 7, 9]def prod(a, b): return a * bprint(reduce(prod, l))
练习题3.#利用map和reduce编写一个str2float函数,把字符串‘123.456’变成123.456from functools import reducedef char2num(s): return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s]def str2float(s): s = s.split('.') if len(s[0]) == 0: s[0] = '0' return (reduce(lambda x, y: x * 10 + y, map(char2num, s[0]))) + \ (reduce(lambda x, y: x * 10 + y, map(char2num, s[1]))) * pow(0.1, len(s[1]))print(str2float('123.456'))
来源:https://www.cnblogs.com/xiaobucainiao/p/5709897.html