• Python 中的map、reduce函数用法


    #-*- coding:UTF-8 -*-
    
    #map()函数接受两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回
    
    def   f(x):
        return  x*x
    
    result=map(f,[1,2,3,4,5])
    print  result    # ==>> [1, 4, 9, 16, 25]
    
    #map()作为高阶函数,它把运算规则抽象了,我们还可以计算任意复杂的函数,比如把list所有的数字转为字符串:
    
    print  map(str,[1,2,3,4,5])   # ==>>  ['1', '2', '3', '4', '5']
    
    
    #reduce  把一个函数作用在一个序列上,reduce同样必须接收两个函数,reduce把结果继续和序列和下一个元素做累积计算,其效果是:
    #reduce(f,[x1,x2,x3,x4])=f(f(f(x1,x2),x3),x4)
    #对一个序列求和,可以用Python内建函数sum(),也可以用reduce来实现:
    def  add(x,y):
        return x+y
    print  reduce(add,[1,3,5,7,9])    #  ==>> 25
    
    #把序列[1,3,5,7,9]变成整数13579
    
    def  fn(x,y):
        return  x*10+y
    
    print  reduce(fn,[1,3,5,7,9])    # ==>> 13579
    
    #字符串也是一个序列,配合map,可以写出把str转为int的函数
    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]
    
    print  reduce(fn,map(char2num,'13579'))  # ==>>  13579
    
    #整理成一个str2int的函数:
    
    def   str2int(s):
        def  fn(x,y):
            return   x*10+y
        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]
        return  reduce(fn,map(char2num,s))
    
    print  str2int(['1','3','5','7','9'])   # ==> 13579
    
    
    #利用lambda函数进一步简化
        
    def   str2int2(s):
        return reduce(lambda x,y:x*10+y,map(char2num,s))
    
    
    
        
        
        
    
  • 相关阅读:
    小总结:fibonacci数的产生
    pick the stone game
    温故知新的错题训练:Coin game
    《博弈论的诡计》
    思维+博弈论:字符串操作
    一下午的编程思索录
    2018中国大学生程序设计竞赛
    温故知新的经典贪心题目:今年暑假不AC?
    2019-2020新学的一些东西(持续更新)
    【半平面交】JZOJ3297. 【SDOI2013】逃考
  • 原文地址:https://www.cnblogs.com/zwgblog/p/7199954.html
Copyright © 2020-2023  润新知