zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    python3.x 基础五:模块
    python3.x 基础四:目录获取及目录规范
    python3.x 基础四:json与pickple
    python3.x 基础四:生成器与迭代器
    python3.x 基础三:装饰器
    python3.x 基础三:函数
    [leetcode]Anagrams
    [leetcode]Text Justification
    [leetcode]Single Number
    [leetcode]Longest Palindromic Substring
  • 原文地址:https://www.cnblogs.com/noah0532/p/10897642.html
Copyright © 2011-2022 走看看