文章目录

  • 1 函数式编程
  • 2 Python函数式编程
    • 2.1 map()
    • 2.2 filter()
    • 2.3 filter()

1 函数式编程

所谓函数式编程,是指代码中每一块都是不可变的(immutable),都由纯函数(pure function)的形式组成。这里的纯函数,是指函数本身相互独立、互不影响,对于相同的输入,总会有相同的输出,没有任何副作用。

def multiply_2(l):for index in range(0, len(l)):l[index] *= 2return l

这段代码就不是一个纯函数的形式,因为列表中元素的值被改变了,如果多次调用 multiply_2() 这个函数,那么每次得到的结果都不一样。

要想让它成为一个纯函数的形式,就得写成下面这种形式,重新创建一个新的列表并返回。

函数式编程的优点,主要在于其纯函数和不可变的特性使程序更加健壮,易于调试(debug)和测试;缺点主要在于限制多,难写。

def multiply_2_pure(l):new_list = []for item in l:new_list.append(item * 2)return new_list

2 Python函数式编程

Python 主要提供了这么几个函数:map()、filter() 和 reduce(),通常结合匿名函数 lambda 一起使用。

2.1 map()

函数 map(function, iterable) 的第一个参数是函数对象,第二个参数是一个可以遍历的集合,它表示对 iterable 的每一个元素,都运用 function 这个函数。

l = [1, 2, 3, 4, 5]
new_list = map(lambda x: x * 2, l) # [2, 4, 6, 8, 10]
print(type(new_list))
print(list(new_list))# 输出
<class 'map'>
[2, 4, 6, 8, 10]

map() 函数直接由 C 语言写的,运行时不需要通过 Python 解释器间接调用,并且内部做了诸多优化,运行速度快

2.2 filter()

filter(function, iterable) 函数,它和 map 函数类似,function 同样表示一个函数对象。filter() 函数表示对 iterable 中的每个元素,都使用 function 判断,并返回 True 或者 False,最后将返回 True 的元素组成一个新的可遍历的集合。

l = [1, 2, 3, 4, 5]
new_list = filter(lambda x: x % 2 == 0, l) # [2, 4]
print(type(new_list))
print(list(new_list))

2.3 filter()

reduce(function, iterable) 函数,它通常用来对一个集合做一些累积操作。

function 同样是一个函数对象,规定它有两个参数,表示对 iterable 中的每个元素以及上一次调用后的结果,运用 function 进行计算,所以最后返回的是一个单独的数值。

from functools import reduce
l = [1, 2, 3, 4, 5]
product = reduce(lambda x, y: x * y, l) # 1*2*3*4*5 = 120
print(type(product))
print(product)
  • 在数据量非常多的情况下,比如机器学习的应用,那我们一般更倾向于函数式编程的表示,因为效率更高;

  • 在数据量不多的情况下,并且你想要程序更加 Pythonic 的话,那么 list comprehension 也不失为一个好选择。

Python函数-函数式编程相关推荐

  1. python采用函数式编程模式吗_Python函数与函数式编程

    1 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可以自己创 ...

  2. 用python处理excel数据做函数_如何使用python通过函数式编程完成excel中的数据处理及分析工作...

    Excel是数据分析中最常用的工具,本篇文章通过python与excel的功能对比介绍如何使用python通过函数式编程完成excel中的数据处理及分析工作.在Python中pandas库用于数据处理 ...

  3. python学习——函数式编程——高阶函数

    python学习--函数式编程--高阶函数 函数式编程(高阶函数):1:map && reduce; 2 : filter; 3: sorted; ------------------ ...

  4. 白话 Python 的函数式编程

    今天和大家聊聊 Python 的函数式编程特性.所谓函数式编程,就是指代码中每一块都是不可变的(immutable),都是由 pure function 的形式组成.这里的 pure function ...

  5. Python的函数式编程--从入门到⎡放弃⎦

    很早以前就听说过了函数式编程,印象中是一种很晦涩难懂的编程模式,但却一直没有去进行了解. 恰好这周组内的周会轮到我主持,一时也没想到要分享什么.灵光一闪,就选定函数式编程这个主题吧,反正组里的同事都没 ...

  6. 【Python】函数式编程

    前言 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计的基本 ...

  7. 函数式编程|python的函数式编程

    面向过程,面向对象 面向过程: 分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了 面向对象: 把问题中的事务分解成各个对象,建立对象的目的不是为了完成一 ...

  8. 05 python 要点 (函数式编程)

    复习时先看看这个:https://blog.csdn.net/weixin_39880623/article/details/110153616? 第一章 函数式编程 一.生成器  (generato ...

  9. python的函数式编程玩法+年末小感

    从小老师教编程语言就告诉分两种:面向过程和面向对象,正如同小学电脑课面对的是win95,仿佛世界上windows就是操作系统的别名,如今还是这样,高校的计算机中心都是windows,所以linux是要 ...

最新文章

  1. 记录 grafana登录 从 go 迁移到 php
  2. 计算机领域认知个人陈述,计算机专业个人陈述十九
  3. java resume过时方法_面试官没想到,一个 Java 线程生命周期,我可以扯半小时
  4. Effective Dart 文档注释在Flutter项目中的实践
  5. 《Nature-Inspired Metaheuristic Algorithms》——蝙蝠算法 Bat Algorithm
  6. Drools教程 —— 简介
  7. 数据分析思维(极客时间)
  8. pb9连接mysql
  9. springcloud之gateway的使用
  10. 【好工具】强烈安利的文献管理软件 Mendeley
  11. Arduino ESP8266利用SPIFFS上传文件和查看文件
  12. 文人教你说祝福——古语祝福
  13. php一句话上传webshell,一句话shell,哪些是恶意的php一句话webshell
  14. 为什么机器学习之路没有捷径可走
  15. [渗透测试][Kali]对DC-2靶机进行渗透测试
  16. 海到无边天作岸,身登绝顶我为峰
  17. 从“盗墓者”变成“守墓人”,鼻祖级黑客Charlie Miller眼中的自动驾驶安全
  18. Python 计算 瑞幸和星巴克 谁的门店最多
  19. 【记录爬虫实战过程】入门学习·详细过程·爬取天气信息并通过pyecharts进行可视化展示1
  20. Eplan p8 v2.7 卡顿问题

热门文章

  1. scrapy模拟浏览器翻页爬取智联
  2. 了解常用 Markdown 扩展语法
  3. android file函数,Android Makefile中wildcard、notdir、patsubst函数的用法
  4. 【JavaSe】网络编程篇(一) 网络编程入门
  5. 图片预览工具不存在_如何维护所有工具,使它们永远(几乎)永远存在
  6. python 文件创建与写入
  7. Python中的网络通信
  8. 对着手机咳嗽一声,就能检测新冠了?还是剑桥大学出品
  9. 计算机化自适应测验 英语,情绪调节的计算机化自适应测验开发:CAT-ER
  10. tplink迷你路由器中继模式_TP-Link TL-WR700N V1-V2迷你型路由器无线中继设置