• python之高阶函数map()和reduce()


    以下为学习笔记:来自廖雪峰的官方网站

    1.高阶函数:简单来说是一个函数里面嵌入另一个函数

    2.python内建的了map()和reduce()函数

    map()函数接收两参数,一个是函数,一个是Iterable.    map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterable返回

    例子:

    #map函数
    def f(x):
    return x * x
    r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9]) #map函数返回一个函数和一个Iterable
    print 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 name

    r = map(normalize, ['LISA', 'adam', 'BaRt'])
    print r

    练习题2:#python提供sum()函数可以接受一个list并求和,请编写一个prod()函数,可以接受一个list,并求和
    from functools import reduce

    l = [3, 5, 7, 9]
    def prod(a, b):
    return a * b

    print(reduce(prod, l))

    练习题3.#利用map和reduce编写一个str2float函数,把字符串‘123.456’变成123.456
    from functools import reduce

    def 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'))
  • 相关阅读:
    UVA 129 Krypton Factor (困难的串)(回溯法)
    UVA 524 Prime Ring Problem(素数环)(回溯法)
    【POJ 2559】Largest Rectangle in a Histogram【栈】
    【POJ 2559】Largest Rectangle in a Histogram【栈】
    向右看齐【栈】
    向右看齐【栈】
    向右看齐【栈】
    【模板】最近公共祖先【LCA】
    【模板】最近公共祖先【LCA】
    【模板】最近公共祖先【LCA】
  • 原文地址:https://www.cnblogs.com/xiaobucainiao/p/5709897.html
Copyright © 2020-2023  润新知