zoukankan      html  css  js  c++  java
  • Python的高级特性4:函数式编程

    函数式编程的核心就是把函数当成对象来进行编程。

    有两个常用到的方法:map/reduce,filter,其中map和filter是内建方法,而reduce不是,所以需要import相关模块。

    map接收两个参数,第一个参数是函数(处理办法),第二个参数是一个可迭代对象,而map可以把第二个参数的变量映射到函数中一一进行处理,结果以list形式返回。

    In [147]: def f(x):
       .....:     return x*x
       .....: 
    
    In [148]: r = map(f,[1,2,3,4,5,6])
    
    In [149]: list(r)
    Out[149]: [1, 4, 9, 16, 25, 36]

    reduce接收两个参数,第一个参数是函数(处理办法),第二个参数是一个可迭代对象,而reduce可以把第二个参数每一次next方法执行的结果映射到函数中进行处理,然后返回一个计算后的值。其实质就是不断的嵌套把此层函数作为下一层函数的参数直到最后。

    In [151]: from functools import reduce
    
    In [152]: def add(x,y):
       .....:     return x+y
       .....: 
    
    In [153]: reduce(add,[1,3,4,7,9])
    Out[153]: 24
    
    In [154]: reduce(add,[1])
    Out[154]: 1

    filter接收两个参数,第一个参数是函数(处理办法),第二个参数是一个可迭代对象,而map可以把第二个参数的变量映射到函数中,根据true/false过滤,结果以list形式返回。

    
    In [156]: def is_odd(n):
       .....:     return n % 2 == 1
       .....: 
    
    In [157]: list(filter(is_odd, (1, 2, 4, 5, 6, 9, 10, 15)))
    Out[157]: [1, 5, 9, 15]
  • 相关阅读:
    cocoaPod
    Swift 命名规则
    Swift 数据类型
    Xcode Version 和Bulid 区别
    升级Xcode之后VVDocumenter-Xcode不能用的解决办法
    Mac svn
    RSA 加密
    想做AI测试,需要学习哪些数学知识?
    selenium + firefox驱动版本对应。
    开机自动启动WEB服务,共享目录。
  • 原文地址:https://www.cnblogs.com/alexkn/p/4660234.html
Copyright © 2011-2022 走看看