zoukankan      html  css  js  c++  java
  • 【廖雪峰老师python教程】——map/reduce

    Map【单个操作对不同单一对象重复进行】


    • map()函数接收两个参数,一个是函数,一个是Iterablemap将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回
    • 返回结果注意转化为list输出;【有点,看起来抽象直观】
    >>> def f(x):
    ...     return x * x
    ...
    >>> r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
    >>> list(r)
    [1, 4, 9, 16, 25, 36, 49, 64, 81]

    Reduce【两个对象操作后迭代下一个对象】


    • reduce把一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个参数reduce把结果继续和序列的下一个元素做累积计算,其效果就是:
    • reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
    >>> from functools import reduce
    >>> def fn(x, y):
    ...     return x * 10 + y
    ...
    >>> reduce(fn, [1, 3, 5, 7, 9])

     

    综合案列


    • str2int()函数定义:
    from functools import reduce
    
    DIGITS = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
    
    def str2int(s):
        def fn(x, y):
            return x * 10 + y
        def char2num(s):
            return DIGITS[s]
        return reduce(fn, map(char2num, s))
    • 上面函数是最终抽象化的结果,可以尝试带一个字符‘123’进去看一看。

    学到的几个其他函数:


    • capitalize()、title():变成首字母大写,其他字母小写。




     

  • 相关阅读:
    27. Remove Element
    26. Remove Duplicates from Sorted Array
    643. Maximum Average Subarray I
    674. Longest Continuous Increasing Subsequence
    1. Two Sum
    217. Contains Duplicate
    448. Find All Numbers Disappeared in an Array
    566. Reshape the Matrix
    628. Maximum Product of Three Numbers
    UVa 1349 Optimal Bus Route Design (最佳完美匹配)
  • 原文地址:https://www.cnblogs.com/ChaoyuanJam/p/9739214.html
Copyright © 2011-2022 走看看