笔记整理自:

  1. https://blog.csdn.net/Solo95/article/details/78834041
  2. https://www.liaoxuefeng.com/wiki/1016959663602400/1017329367486080
    高阶函数:可以把函数作为参数传入,变量可以指向函数,eg. f=abs;传入函数
def add(x, y, f):
    return f(x)+f(y)

Map

惰性序列:Python的惰性序列多数指Iterator,意思是表达式和变量绑定(比如:调用iter()得到了一个iterator并赋值给一个变量)后不会立即进行求值,而是当你用到其中某些元素的时候才去求某元素对的值(比如next()访问到某元素才去实际计算某元素的值)。你不主动去遍历它,就不会计算其中元素的值。
意义:

  • 可以实现无限序列的表示,且不需要再内存中计算出所有的自然数
  • 在大规模数据处理中起到延迟计算的作用,把计算步骤延迟到了要实际使用该数据的时候
    map传入两个参数,map(函数,Iterale),将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。

Reduce

reduce(函数, Iterable)中传入的函数对参数学列中的元素进行累计

reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)

练习:

  1. 利用map()函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字
def normalize(name):
    name = name[0].upper()+name[1:].lower()
    return name

# 测试:
L1 = ['adam', 'LISA', 'barT']
L2 = list(map(normalize, L1))
print(L2)
  1. 利用map和reduce编写一个str2float函数,把字符串'123.456'转换成浮点数123.456:
def str2float(s):
    index = s.index('.')
    return reduce(lambda x, y:x*10+y, map(lambda x:int(x), s[:index]))+reduce(lambda x, y:x*0.1+y, map(lambda x:int(x), reduce(lambda x, y: y+x, s[index+1:])))*0.1

标签: none

添加新评论