zoukankan      html  css  js  c++  java
  • 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))
    
    
    
        
        
        
    
  • 相关阅读:
    MyGeneration:开源的代码生成工具
    有了NHibernate就不再需要DAO了
    在vs编辑器里走来走去的快捷键
    asp.net的程序的一种简化结构
    取得gridview的行值
    asp.net中MVC模式的简单实现
    美味书签上的信息质量要好于博客RSS
    DAO已死,至少是中小型项目是这样
    免费好看的msdn中文杂志电子版
    Rhino Mocks是很不错的开源测试框架
  • 原文地址:https://www.cnblogs.com/zwgblog/p/7199954.html
Copyright © 2011-2022 走看看