python自学篇九[ 函数(四):递归函数+匿名函数+内置函数+高阶函数]

递归函数和高阶函数-7 Python中的递归函数、匿名函数lambda、高阶函数map、reduce、filter、sorted的使用 阅读详情

python基础系列:
python自学篇一[ Anaconda3安装 ]
python自学篇二[ pycharm安装及使用 ]
python自学篇三[ 判断语句if的使用 ]
python自学篇四[ 基本数据类型和字符串常用处理 ]
python自学篇五[ 列表 ]
python自学篇六[ 元组 ]
python自学篇七[ 字典+深拷贝与浅拷贝 ]描述
python自学篇八[ 循环:while+for+pass+range()+推导式 ]
python自学篇九[ 函数(一):参数+对象 ]
python自学篇九[ 函数(二):返回值return+yield+迭代器+生成器 ]
python自学篇九[ 函数(三):变量作用域+ATM+5个小练习 ]
python自学篇九[ 函数(四):递归函数+匿名函数+内置函数+高阶函数 ]
python自学篇十[ 面向对象 (一) :面向对象概念+定义类+练习一]
python自学篇十[ 面向对象 (二) :继承+多继承+类属性+实例属性]
python自学篇十[ 面向对象 (三) :访问限制+类方法+静态方法]
python自学篇十[ 面向对象 (四) :王者荣耀小游戏+模拟一个简单的银行进行业务办理的类]
python自学篇十一[ 模块简介+模块制作+dir()函数+标准模块+包]
python自学篇十二[ 文件:打开+读取+写入+3个习题]

递归函数

  • 递归函数:递归就是子程序(或函数)直接调用自己或通过一系列调用语句间接调用自己,是一种描述问题和解决问题的基本方法。(一句话,自己调用自己)
  • 举例,计算阶乘 n! = 1 * 2 * 3 * … * n,用函数 fact(n)表示,可以看出:
    1! = 1
    2! = 2 × 1 = 2 × 1!
    3! = 3 × 2 × 1 = 3 × 2!
    4! = 4 × 3 × 2 × 1 = 4 × 3!
    …
    n! = n × (n-1)!
  • 同样的,可以把递归看作一场梦,做梦的时候梦到自己在做梦,梦中的自己正在做梦···,或者是镜子里面看见有个镜子,里面有自己,一层一层的。
  • 求阶乘
def factorial(n):
    if n == 1:
        return 1
    else:
        return n*factorial(n-1)

print(factorial(10))

结果:

3628800

匿名函数

  • 定义函数的过程中,没有给定名称的函数就叫做匿名函数;Python中使用lambda表达式来创建匿名函数
lambda 来创建匿名函数规则:
  • lambda只是一个表达式,函数体比def简单很多

  • lambda的主体是一个表达式,而不是一个代码块,所以不能写太多的逻辑进去

  • lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数

  • lambda定义的函数的返回值就是表达式的返回值,不需要return语句块

  • lambda表达式的主要应用场景就是赋值给变量、作为参数传入其它函数

  • lambda匿名函数的表达式规则是:

lambda [参数列表]: 表达式

例如:

a=lambda :'我爱你'
print(a())

结果:

我爱你
  • 带参数的lambda
s = lambda x: x*2
print(s(3))

结果:

6
  • 多参数lambda
s = lambda x,y: x+y
print(s(3,4))

结果:

7

矢量化的三元运算符

  • 原来:
if  条件:
        代码块哦
    else:
        代码块
  • 矢量化的三元运算符
条件成立的内容   if 条件 else 条件不成立的内容

如:

s = lambda x,y: x if x > 2 else y
print(s(1,4))

常用内置函数

在这里插入图片描述

  • 字典排序
dic = {'a':1,'c':2,'b':3}
dic = sorted(dic.items())
print(dic)

结果:

[(‘a’, 1), (‘b’, 3), (‘c’, 2)]

  • 倒序排序
dic = {'a':1,'c':2,'b':3}
dic = sorted(dic.items(),reverse= True)
print(dic)

结果:

[(‘c’, 2), (‘b’, 3), (‘a’, 1)]

  • 列表推导式
dic = {'a':1,'c':2,'b':3}
dic = sorted(dic.items()) #通过内置函数 sorted进行排序内置函数有返回值  默认通过KEY排序
print({k:v for k,v in dic})  #列表推导式输出

结果:

{‘a’: 1, ‘b’: 3, ‘c’: 2}

  • 通过lambda按指定元素排序
dic = sorted(dic.items(),key = lambda x:x[1])  
#x:x[1]是指 [('c', 2), ('b', 3), ('a', 1)]中每个元组中的索引值为1的元素,即2,3,1
lsit01 = [
    {'name':'joe','age':18},
    {'name':'susan','age':19},
    {'name':'tom','age':17}
]
dic = sorted(lsit01,key = lambda x:x['age'],reverse=True)   #内置函数有返回值  默认通过KEY排序
print(dic)
#按照age从大到小排序

结果:

[{‘name’: ‘susan’, ‘age’: 19}, {‘name’: ‘joe’, ‘age’: 18}, {‘name’: ‘tom’, ‘age’: 17}]

常用高阶函数

在这里插入图片描述

map
#map
list01 = [1, 3, 5, 7, 9]
list02 = [2, 4, 6, 8, 10]
new_list = map(lambda x, y: x*y, list01, list02)
print(list(new_list))#将map对象转换为list

结果:

[2, 12, 30, 56, 90]

filter
#filter
list02 = [2, 4, 6, 8, 10]
new_list = filter(lambda x: x > 4, list02) #filter将不符合条件的元素过滤掉
print(list(new_list))

结果:

[6, 8, 10]

reduce
#reduce
from functools import reduce
list02 = [2, 4, 6, 8, 10]
new_list = reduce(lambda x, y: x+y, list02, 0)#0为x的初始值,先把0给x,2给y,再把结果给x,4给y,依次进行,类似求和
print(new_list)

结果:

30

高阶函数使用三个案例

案例一:格式化用户的英文名,要求首字母大小,其它字母小写
name = ['joe','susan','black','lili']
age = [18,19,20,21]
sex = ['m','w','m','w']
new_name = map(lambda x:x.title() ,name)
new_name = list(new_name)
print(new_name)

结果:

[‘Joe’, ‘Susan’, ‘Black’, ‘Lili’]

案例二:将用户英文名、年龄、性别三个集合的数据结合到一起,形成一个元组列表
name = ['joe','susan','black','lili']
age = [18,19,20,21]
sex = ['m','w','m','w']
users = map(lambda x,y,z:(x,y,z),name,age,sex)
new_users = list(users)
print(new_users)

结果:

[(‘joe’, 18, ‘m’), (‘susan’, 19, ‘w’), (‘black’, 20, ‘m’), (‘lili’, 21, ‘w’)]

案例三:过滤性别为男的用户
name = ['joe','susan','black','lili']
age = [18,19,20,21]
sex = ['m','w','m','w']

users = map(lambda x,y,z:(x,y,z),name,age,sex)
new_users = list(users)
print(new_users)


new_users = filter(lambda x:x[2] == 'm',new_users)
new_users = list(new_users)
print(new_users)

结果:

[(‘joe’, 18, ‘m’), (‘susan’, 19, ‘w’), (‘black’, 20, ‘m’), (‘lili’, 21, ‘w’)]
[(‘joe’, 18, ‘m’), (‘black’, 20, ‘m’)]

案例四:求性别为男的用户的平均年龄
name = ['joe','susan','black','lili']
age = [18,19,20,21]
sex = ['m','w','m','w']

users = map(lambda x,y,z:(x,y,z),name,age,sex)
new_users = list(users)
#print(new_users)

#
# new_users = filter(lambda x:x[2] == 'm',new_users)
# new_users = list(new_users)
# print(new_users)
from functools import reduce
total_age = reduce(lambda x,y:x+y[1],new_users,0)
print(total_age/len(new_users))

结果:

19.5

Python入门教程 —— 高阶函数和装饰器 在Python中,我们还可以定义一个变量,让它来指向一个函数,相当于给函数起了一个别名。fun = test # 定义了一个变量fun,让它指向了 test 这个函数print(fun()) # 使用fun()可以直接调用test这个函数注意:在定义一个变量表示一个函数时,函数后面不能加括号!加括号表示的是调用这个函数。result = test() # 这种写法是调用test函数,并把函数的返回值赋值给result变量。 阅读详情

相关推荐

python中匿名函数和递归函数的使用

标准库中有与时间相关的time、datetime模块,随机数的random模块,与操作系统交互的os模块,对Python解释器相关操作的sys模块,数学计算的math模块等几十个模块。公共类、函数都可以放在独立的文件中,这样其他多个程序都可以使用,而不必把这些公共的类、函数等在每个程序中复制一份,这样独立的文件就叫做模块。编写递归程序要注意两点一要找出正确的递归算法,这是编写递归程序的基础;匿名函数是指没有函数名的简单函数,只可以包含一个表达式,不允许包含其他复杂的语句,表达式的结果是函数的返回值。...

m0_62330133的博客 930

Python学习19:递归函数

在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。 举个例子,我们来计算阶乘n! = 1 x 2 x 3 x ... x n,用函数fact(n)表示,可以看出: fact(n) = n! = 1 x 2 x 3 x ... x (n-1) x n = (n-1)! x n = fact(n-1) x n 所以,fact(n)可以表示为n x fact(n-...

张陈亚的博客 1264

保姆级教程:手把手配置MAX9295/9296 GMSL2-CSI2链路,搞定4LAN/1LAN模式与常见调试

本文提供MAX9295/9296 GMSL2-CSI2链路的详细配置教程,涵盖4LAN和1LAN模式的硬件连接、寄存器配置及调试技巧。通过实战案例和代码示例,帮助开发者快速实现高带宽视频传输,解决常见问题如信号同步和功耗优化,适用于车载摄像头和机器人视觉系统开发。

weixin_42561143的博客 434

python函数教程:Python递归函数特点及原理解析

这篇文章主要介绍了Python递归函数特点及原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1 递归函数的特点 特点 一个函数 内部 调用自己 函数内部可以调用其他函数,当然在函数内部也可以调用自己 代码特点 函数内部的 代码 是相同的,只是针对 参数 不同,处理的结果不同 当 参数满足一个条件 时,函数不再执行 这个非常重要,通常被称为...

python函数学习教程 5225

西门子博图编程:使用S7-1500冗余PLC 建立ModbusTCP通信

文章目录1.1 网络结构1.2 系统 IP 介绍1.3 Modbus TCP 通讯编程1.3.1 CPU 做服务器 1.1 网络结构 以 CPU151 7H 为例, 网络结构示意如下图所示: CPU 1517H 冗余 PLC 有 PROFINET X1 接口和 X2 接口, Modbus TCP 通讯可以将设备(例如 Standard PLC)通过交换机接入到任何网络接口中。如果接入 X1 接口,需要通过交换机接入到 MRP 环网中,但是并不需要支持 H-sync 转发。如果接入 X2 接口,只需要使

2万+

【科研学习】Demo3D2015安装包以及图文安装步骤

安装包 点击下图的.exe文件,安装 不需要解压,打开注册机 如下图: 点击上图的.exe文件,出现下图 先点击 patch 打开安装目录下的Demo3D.licensing.dll文件,然后点击Generate,生成dvt-license文件,保存即可 打开安装完成的Demo3D 2015(64-bit),一般破解没完成的,会出现一个request a license 的问题,点击find license 的那一行 点击后找到自己Generate,生成dvt

KaelCui的博客 1万+

Python:设计函数,计算20*19*…*3

m0_56353506的博客 2万+

RagFlow 文档解析

RAGFlow 的设计哲学是“高质量输入,高质量输出”,它通过提供可解释性和可控性的生成结果,让用户能够信任并依赖于系统提供的答案。

weixin_43008312的博客 3999

【Python篇】Python 函数综合指南——从基础到高阶

在 Python 中,函数是构建程序的一个重要部分,它允许你封装逻辑并高效地重用代码。函数是组织良好的、可重复使用的代码块,用于执行单一的、相关的操作。函数为的应用提供了更好的模块化能力,并提高了代码的重用性。函数是一组相关语句的集合,用于执行特定的任务。函数有助于将程序分解为更小的模块化块。当程序越来越大时,函数使其更加有序和易于管理。在 Python 中,可以使用def关键字来定义函数。"""文档字符串"""语句块: 这是函数的名称。parameters: 这些是传递给函数的参数。它们是可选的。

半截诗的博客~ 6622

wsl2 配置ubuntu 固定ip

wsls ubuntu 设置固定ip

musk1212的博客 2616

EDA虚拟机分享2020版本(Synopsys2020)

EDA虚拟机分享

亦安的数字小站 9189

Python入门:9.递归函数和高阶函数

在 Python 编程中,函数是核心组成部分之一。递归函数和高阶函数是 Python 中两个非常重要的特性。递归函数帮助我们以更直观的方式处理重复性问题,而高阶函数通过函数作为参数或返回值,为代码增添了极大的灵活性和优雅性。无论是实现复杂的算法还是处理数据流,这些工具都在开发者的工具箱中扮演着重要角色。本文将从概念入手,逐步带你掌握递归函数、匿名函数(lambda)以及高阶函数的核心要领和应用技巧。

平凡程序猿~的博客 1216

CANoe LIN一致性测试之干扰测试Test moudle_LIN Disturbance Block

注意:相邻两个显隐性不同的bit不允许干扰,例如我同时选择bit6和bit7,相邻两个同显隐性的bit允许干扰,例如当我选择bit3和bit4,项,这里我选择ID:为0x2F(PID:0x6F)的frame。需按照具体测试规范实施干扰项,帧头和数据段都可以实现干扰。最近发现一个干扰测试模块,下面是一些具体使用方法。选择干扰项:PID的奇偶校验位(一致性测试干扰测试之手动测试。一个待测试frameD。

yuanyikangkang的博客 3410

递归函数与匿名函数、内置函数

这些组合技巧在函数式编程、算法实现和数据处理等场景中都有广泛应用。熟练掌握这些组合方式可以编写出更简洁高效的代码,同时保持逻辑的清晰性。递归函数是指在函数定义中调用自身的函数。递归通过将复杂问题分解为相似但规模更小的子问题来解决问题,直到子问题可以直接求解。这些函数特性可以灵活组合使用,实现更强大和优雅的编程解决方案。Python提供了一系列内置函数,可以直接使用而无需导入。匿名函数(lambda函数)是没有名称的小型函数,使用。

Made In SQL 1055

Open3D (C++) 计算点云坐标最值及其索引

使用C++版本的Open3D计算点云最值点及其对应的下标索引

点云侠的博客 728

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

python中的高阶函数

@ 1 什么是高阶函数? 只要满足下面的任意一个条件就是高阶函数 1、一个函数的函数名作为参数传给另外一个函数 2、一个函数返回值(return)为另外一个函数(返回为自己,则为递归) 下面分别举例详细说明: 1.1 高阶函数:一个函数的函数名作为参数传给另外一个函数 def func(): print("定义一个普通函数") def high_level(func): ...

求真、务实 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

递归函数与匿名函数、内置函数实战指南

本文介绍了递归函数的核心概念与应用技巧。递归函数通过基线条件和递归条件实现自我调用,典型应用包括阶乘计算、归并排序等。文章分析了递归的常见模式(线性、分治、树形)与优化策略(缓存、尾递归),并探讨了匿名函数(lambda)的特点及其与递归的结合使用。同时列举了Python内置函数(sum、map、filter等)在递归场景下的应用,以及如何避免常见陷阱。最后通过目录统计等实例,展示了递归、匿名函数和内置函数的协同工作模式,将其分别比喻为"骨架-胶水-螺丝"的关系。

2401_85727638的博客 1315

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Python的函数(二):递归函数、匿名函数、高阶函数

文章目录一.递归函数二.匿名函数1.匿名函数的定义2.内置函数和类 一.递归函数 如果一个函数在内部不调用其它的函数,而是自己本身的话,这个函数就是递归函数。 其最重要的就是找到停止的条件。 计算n的阶乘。 我们可以使用循环来完成。 def xunhuan(num): result, i = 1, 1 while i <= num: result *= i ...

YFater的博客 333

Python 入门手札:从 0 到会--第六天Python 函数进阶--匿名函数/高阶函数/变量作用域/递归函数

本文系统介绍了Python中的匿名函数和高阶函数。匿名函数(lambda)用于创建临时函数对象,适用于简单表达式场景,但不支持复杂逻辑。高阶函数以函数为参数或返回值,包括map、filter、reduce等内置函数,能增强代码抽象能力。文章还讲解了变量作用域规则(LEGB)和递归函数设计要点,强调必须设置终止条件(边界墙)避免无限递归。通过大量示例展示了如何混合使用lambda和高阶函数处理数据,同时指出递归的关键在于分解问题和设置合理的终止条件。这些概念是理解函数式编程、闭包和装饰器的基础。

m0_74898821的博客 1391

Python 递归函数、高阶函数、匿名函数和闭包

目录一、递归函数二、高阶函数三、匿名函数四、闭包 一、递归函数 递归函数是指在一个函数内部通过调用自己来求解一个问题。当我们在进行问题分解时,发现分解之后待解决的子问题与原问题有着相同的特性和解法,只是在问题的规模上与原问题相比有所减小,此时,就可以设计递归函数进行求解。比如,对于 n!问题就可以使用下列递归方法解决。 def foo(n): if n==1: # 递归终止条件 return 1 return n * foo(n-1) print(foo(10))

weixin_43350001的博客 485

Python中常见的函数类型(高阶函数 map、filter、reduce|内置函数enumerate 的应用)

高阶函数是接受一个或多个函数作为参数,并/或返回一个函数的函数。它们可以用于函数的组合、函数的包装、函数的延迟执行等场景。 语法:map(function, iterable) ,是Python的内置函数 * 功能:对可迭代对象中的每个元素应用指定的函数,并返回一个由函数结果组成的迭代器。

cs_mengxi的博客 835

python学习(每日更新)——引用,匿名函数,递归函数,部分内置函数

eval() 用来执行字符串表达式,并返回表达式的值(动态执行的函数)可以调用函数执行。zip() 用于将对象中对应的元素打包成一个元组,然后返回由这些元组组成的列表。all() 用于判断给定的可迭代参数中的所有元素是否都为True。any() 用于判断给定的可迭代参数中的所有元素是否都为False。round(x,y) x为浮点数,y为保留的小数位数。

qq_74196628的博客 845

python中递归函数两个变量_Python函数篇(2)-递归函数、匿名函数及高阶函数(已更新)...

1.全局变量和局部变量一般定义在程序的最开始的变量称为函数变量,在子程序中定义的变量称为局部变量,可以简单的理解为,无缩进的为全局变量,有缩进的是局部变量,全局变量的作用域是整个程序,而局部变量的作用域是子程序内部,当程序运行时,首先会找程序内部有没有局部变量,如果有,则调用,如果没有,才会去调用全局变量。如下:name="czp"            #全局变量deffunc():name="...

weixin_39868248的博客 598

Python基础—内置函数、匿名函数、递归函数

内置函数、匿名函数、递归函数

qq_39280718的博客 262

python-函数 递归函数,内置函数和匿名函数

  目录 1.递归函数 (1)使用递归函数向控制台打印3,2,1 (2):计算1到10的乘阶:例如 1*2*3*4*5...*10。 (3):查找数字:通过程序查找输入的number值。 2.内置函数 (1).abs函数 (2).max函数 1.简单的max(最大值对比) 2.使用key关键字 3.根据name 返回最大的信息值 (4)map函数 (5)filter函数 ...

前路艰险,路途漫长 735

012匿名函数、递归函数和高阶函数

一、匿名函数的定义 1. 匿名函数本质还是函数,普通函数中除了定义的语法其他全部适用于匿名函数 1)定义匿名函数的语法: 函数名 = lambda 形参列表:返回值 说明: lambda 关键字,固定写法 形参列表 '形参1,形参2,...' 的形式存在 : 固定写法 返回值 写任何有结果的表达式 2)调用匿名函数: 函数变量(实参列表) 匿名函数的本质就是类

ycl1995的博客 279
上一篇: python自学篇九[ 函数(三):变量作用域+ATM+5个小练习]
下一篇: Java学习(面向对象设计原则+重构原则+互联网未来发展趋势)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值