Python老鸟,你应该了解的Python函数式编程!

python函数式编程 大家好,这里还还还是长弓 今天我们来讲讲python中的函数式编程 函数式编程 有些同学疑惑了,我们已经学了函数,为什么还要学这个函数式编程呢? 两者的区别是什么呢? 函数是一个语法,函数式编程是一种编程的思路 是将本是CPU加减乘除的过程封装成一个个函数,调用函数的过程,更整体,更人性 函数式编程允许传入一个函数作为函数... 阅读详情

76c38c5b698c733e4706255128f1f72c.png

592ece7c6733c74cacd80874c851a119.jpeg

函数式编程(Functional Programming)或者函数程序设计,是一种编程范型。

它将计算机运算视为数学上的函数运算,并且避免使用程序状态以及变量对象。

以上只是简单的函数式编程的概念,我们只需简单了解即可。

在 Python 中,函数式编程主要由几个函数的使用构成:lambda(), map(), reduce(), filter()等。

01.lambda 函数

lambda 函数,又成为匿名函数。lambda 函数只能有一个表达式,而不需要写 return 来返回函数的值。当然,匿名函数也是一个函数对象,同样可以把匿名函数赋值给一个变量。

126675bc9d007e26db3102e155b12aa6.png也可以把匿名函数作为返回值来返回

2881aff048dda659aa09f93a889b06d6.png可以看出,变量 f 就是一个 lambda 函数类型,需要使用f()来调用该函数。

02.map函数

map 函数接收两个参数,一个是函数,一个是 Interable (可迭代序列),map 函数依次将函数作用到序列的每个元素,并把结果作为新的 Interable 返回。

看一个例子:

00a570a23100970c936289cd275a9b62.png

一个简单的列表解析,把列表 a 的每个元素都加2,用 map 函数可以写为:

f5138e337b8828c35b8d052d3005679c.png由于 map 函数返回的是一个惰性序列,需要通过list()等函数来调用它。

虽然上面的代码看起来比直接写 for 循环要复杂,但是当数据量很大的情况下,Python 的 for 效率就不是很高了,而 map 的效率是可以接近 C 语言的。同时代码也简洁很多,简直装X神器。

另一个小例子,把列表中的元素转换为字符串,一条命令

457eac09f2256887cd3137090bdaa7eb.png

03.reduce函数

它和 map 有些像,不过 map 是用于逐一遍历,而 reduce 函数是用来递归计算的。

一个简单的序列求和

32a2c7b56b71d875a5206f6d2aea1ca9.png

对列表 a 的各个元素依次求和,再看一个自制的int()函数的例子

这是 Python 内置函数 int 的用法

f02169f49b8a752fa96546b734263166.png我们通过 reduce 和 map 函数也可以实现如下

15f85174a464c9e37fca06eca6d26f86.png先用 map 函数来遍历 23465 这个字符串列表,然后通过 reduce 函数递归应用列表每个元素到 lambda 函数。

04. filter函数

它同样接收一个函数和一个序列,filter()把传入的函数依次作用于每个元素,然后根据返回值是 True 还是 False 决定保留还是丢弃该元素。

3b2494d3cdbb46a6d41da0e4b885704d.png

总结

使用这些函数,不仅可以让我们的代码更加简洁,同时在大数据量或者计算密集时,能够大大提高效率。

好了,这就是今天分享的全部内容,喜欢就点个赞吧~

推荐阅读:
入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径
干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影
趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|
【新手python程序员必须明白的真相】5.新手Python程序员必须明白的函数式编程思维:早掌握,代码优雅又高效! 编程就像登山,函数式思维就是那条隐藏的登山杖。刚开始可能觉得不顺手,但当你跨过某个临界点,就会发现自己代码的bug率下降了,review时被吐槽的次数减少了,甚至开始享受重构的乐趣了。记住,好的代码不是一次写成的,而是不断进化的。从今天开始,每次写for“代码的优雅程度,决定了你加班的时间长度。” 愿各位少写点祖传代码,多留点时间享受生活。保持好奇,保持饥渴,我们山顶见! 阅读详情

相关推荐

halcon 深度学习标注_Halcon deep learning之目标检测笔记(一)

设置输入输出的路径输入路径有两个,一个是图像路径HalconImageDir,一个是Json文件路径PillBagJsonFile。这两个参数用于后续在图像路径中读取coco文件。输出路径首先定义一个新的文件夹路径,用于存放样本和模型文件等数据。设置基于深度学习的目标检测模型的路径,该模型文件以.hdl结尾。设置样本数据文件夹ExampleDataDir:'detect_pills_data'数据...

weixin_27885313的博客 2701

老鸟的Python入门教程

重要说明 这不是给编程新手准备的教程,如果您入行编程不久,或者还没有使用过1到2门编程语言,请移步!这是有一定编程经验的人准备的.最好是熟知Java或C,懂得命令行,Shell等.总之,这是面向老鸟的,让老鸟快速上手Python教程.为什么总结这样的一个教程 我虽不是老鸟,但已熟悉Java,C/C++, Shell和Perl,且对常见的数据结构和算法等都了解.最近因项目需要,要做一个小工具,评...

ithome 738

【计算机视觉】pyrealsense2:Intel RealSense 深度相机的 Python 接口实战指南

pyrealsense2:Intel RealSense 深度相机的 Python 接口实战

weixin_43988131的博客 4353

十年Python老鸟总结的5条Python开发最佳实践

作为一个做了十几年Python开发的老鸟,为大家总结出5条Python开发最佳实践。

略懂……略懂…… 1463

从零到一:基于STM32F103C8T6与HAL库的磁悬浮电赛装置实战解析

本文详细解析了基于STM32F103C8T6微控制器与HAL库,从零构建磁悬浮装置的完整实战方案。文章深入剖析了硬件设计中的线圈布局与“反向串联”巧思,以节省PWM资源;并阐述了采用三闭环PID控制算法的软件实现,结合Keil开发环境与HAL库进行工程搭建与调试。该方案为电子设计竞赛(电赛)提供了高可行性的参考,是嵌入式软硬件综合实践的优秀范例。

weixin_29169505的博客 276

cartographer从入门到精通(一):cartographer介绍

Cartographer的架构图我们可以看到白色框出来的三个区域,分别是Input Sensor Data(数据输入模块)Local SLAM(局部SLAM模块)Global SLAM (background thread)(全局SLAM模块)下面我们分别介绍一下这几个模块。

weixin_68094467的博客 1054

测试老鸟,Python接口自动化测试框架搭建-全过程,看这篇就够了...

1、接口测试自动化好处可以在短时间内自动执行大量的测试用例;通过参数化和数据驱动的方式进行测试数据的变化,提高测试覆盖范围;快速反馈测试执行结果和报告;支持持续集成和持续交付的流程;2、使用Python+Requests+Pytest+Allure搭建测试框架目的简化接口测试编写:Requests库是 Python 的一个优雅且简单的 Http库,可以很方便地发送 http 请求,接收和处理接口返回的响应数据。

分享测试知识 5741

从零开始!在 Windows 上安装与配置 Dify

这篇博客将详细介绍如何在 Windows 系统上部署 Dify,适合零基础用户。从 Docker 和 WSL 的安装配置开始,逐步指导用户设置 Git、Docker 环境以及 Dify 配置文件,解决可能遇到的端口冲突等问题,最终完成 Dify 的启动和测试。通过简明易懂的步骤,帮助用户在本地成功运行 Dify,实现模型供应商配置,让 Dify 项目在 Windows 平台上顺利上线。

qq_49035156的博客 5万+

python老鸟也不一定知道的小知识点--学习笔记

列表与元组的拼接 问题:L = [1,2,3] T = (4,5,6) #如何将两个容器拼接成一个列表[1,2,3,4,5,6]?对于新手来说,第一反应肯定是for语句遍历T,再将元素逐个加到L后面但是python讲求简洁,有没有一行代码搞定(装逼)的方法呢?如果是个老鸟,肯定会想到下面的方法L = L + list(T)先用list转换成列表,然后拼接起来,恩.果然简洁了不少你以为这就结束了?怎...

Polaris的博客 1330

SV--对象拷贝、参数化的类

对象拷贝,参数化的类

创芯人--fly的博客 1571

manimgl安装

安装manimgl

happytree001的博客 710

Python老鸟,你应该了解的Python函数式编程

函数式编程(Functional Programming)或者函数程序设计,是一种编程范型。 它将计算机运算视为数学上的函数运算,并且避免使用程序状态以及变量对象。 以上只是简单的函数式编程的概念,我们只需简单了解即可。

y1282037271的博客 129

Python爬虫实战:携程旅游平台数据爬取(酒店+机票+景点),破解加密与反爬(附完整代码)

携程的反爬机制再复杂,核心逻辑都是“识别非真实用户的请求”,而爬虫的核心就是“让请求看起来像真实用户的行为”。本文的方案从登录态处理、参数加密破解、动态数据抓取,到反爬应对,都是围绕“模拟真实”展开:用Playwright模拟真实浏览器登录,用住宅代理模拟真实用户IP,用随机延迟模拟真实用户的操作频率。掌握了这个核心思路,无论平台的反爬如何升级,都能找到应对方法。当然,爬虫技术是一把双刃剑,合理使用才能发挥其价值。如果你的爬虫项目中遇到了携程的反爬问题,不妨按照本文的步骤试试,大概率能解决问题。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2608

老鸟的Python新手教程

重要说明 这不是给编程新手准备的教程,假设您入行编程不久,或者还没有使用过1到2门编程语言,请移步!这是有一定编程经验的人准备的.最好是熟知Java或C,懂得命令行,Shell等.总之,这是面向老鸟的,让老鸟高速上手Python教程. 为什么总结这种一个教程 我虽不是老鸟,但已熟悉Java,C/C++, Shell和Perl,且对常见的数据结构和算法等都了解.近期因项目须要,要做一个...

weixin_30412167的博客 215

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Python 函数式编程,看这一篇就够了

不知道你们用的什么环境,我一般都是用的Python3.6环境和pycharm解释器,没有软件,或者没有资料,没人解答问题,都可以免费领取(包括今天的代码),过几天我还会做个视频教程出来,有需要也可以领取~给大家准备的学习资料包括但不限于:Python 环境、pycharm编辑器/永久激活/翻译插件python 零基础视频教程Python 界面开发实战教程Python 爬虫实战教程Python 数据分析实战教程python 游戏开发实战教程Python 电子书100本。

2401_84538135的博客 1128

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

一万字一篇文20分钟学会C语言和Python,十四年编程经验老鸟传授经验之道

前言 昨天在直播中有粉丝问我如何快速的对编程语言入门,我想这个问题是有必要让大家知道的,相必也有很多新手对于如何快速完成编程语言的入门学习很感兴趣,本篇文将会使用 C 语言以及 Python 为例,做出对比,让大家对编程语言的共同基础知识点得以了解,方便大家的学习。 在此我做了一张图,红色标注为 Python 与 C 语言之间的知识点细微差异(指使用上),蓝色标注为较大差异。 从上图中我们可以发现,Python 与 C 语言两者差异并不明显,80% 内容较为类似;我们接下来将会同时学习这些有共同点的知识点

1_bit 的博客 3万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

10年编程经验的python老鸟,祝你上岸it行业

1、保持学习的持续性,并且要不断学习,把编程当做一种习惯。2、不要一味的对着别人的代码敲,你不是码农,而是一个开发者,思考和思路才是你要学的。3、脑过千遍,不如手过一遍。一定要学练结合,从做项目中找知识漏洞。各位想要更好的学习Python,这里给大家准备了一份Python学习资料,里面的内容都是适合零基础小白的笔记和资料,不懂编程也能听懂、看懂。获取方式:点击这里【 Python全套资料】 即可获取。

DEVELOPERAA的博客 219
上一篇: 2022 全球程序员薪酬报告:字节主管工程师年薪中位数 56.4 万美元,排世界第 7...
下一篇: 天哪!用Python实现自动驾驶!
菜鸟学Python
博客等级 码龄9年 8089粉丝 571原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值