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

深度学习入门:使用CMSIS-NN在微控制器上部署模型的完整指南与Python Jupyter实践

CMSIS-NN是ARM为Cortex-M系列微控制器设计的神经网络库。它旨在提供一套高效、轻量级的神经网络API,使得开发者可以在资源受限的微控制器上运行深度学习模型。CMSIS-NN优化了各种常见的神经网络层,如卷积层、全连接层等,确保它们在微控制器上的运行效率。# 定义模型])# 编译模型# 训练模型这样,我们就得到了一个简单的手写数字识别模型。注意:为了简洁和清晰,本文中的代码可能不是最优的或最完整的实现。为了获得完整的项目和更多的优化技巧,请下载完整项目。

m0_57781768的博客 5884

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

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

python函数学习教程 5225

华为CNA VRM搭建(使用vmware worfstartion搭建)

华为CNA和VRM在 vmware workstation安装使用

weixin_70595351的博客 1810

OpenManus本地部署实战:从源码编译到浏览器路径优化全解析

本文详细解析了OpenManus本地部署的全过程,从源码编译到浏览器路径优化。涵盖环境准备、源码获取、模型配置、依赖安装等关键步骤,特别针对Windows系统下的chrome.exe路径修改提供了实用解决方案,帮助开发者高效完成部署并优化性能。

weixin_28826545的博客 379

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

m0_56353506的博客 2万+

CQE和SQE 以及 PQA和DQA的区别

‌:PQA聚焦产品全生命周期流程管理,DQA专注于设计阶段的质量控制。

a1809032425的博客 1904

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

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

半截诗的博客~ 6622

【OpenClaw从入门到精通】第34篇:医疗AI的“Agent OS”时代:基于WiseClaw构建医院专属智能体平台(2026实测版)

2026年医疗AI迈入实战落地新阶段,全球首个医疗OpenClaw平台WiseClaw正式发布,香港中文大学(深圳)医院完成业内首个私有化部署。本文基于真实医疗场景需求与公开技术资料,系统拆解医疗智能体平台的建设逻辑:从医疗Agent OS的五大核心特性切入,详解门诊病历质控、用药审查、医院运行管理三大临床场景的智能体搭建流程,提供完整的私有化部署代码、安全配置方案与实操演示。文章兼顾新手入门与进阶需求,严格遵循医疗合规要求,强调“只读不写+人工复核”原则,所有方案均经过虚拟实测验证。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 788

[VCS]VCS dump fsdb的精细化控制

本文介绍了VCS FSDB波形dump的精细化控制方法。主要内容包括:1)基本dump方式;2)通过$fsdbDumpoff排除特定层次;3)使用$fsdbDumpvars选择性dump指定模块;4)运行时动态控制dump开关;5)通过文件管理排除列表($fsdbDumpoffFile或自定义读取);6)层次控制策略(剪除整棵树或仅当前层)。这些方法可有效控制波形文件大小,提高仿真效率。

元直的博客 1033

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

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

平凡程序猿~的博客 1216

【推荐100个unity插件】制作美丽 Unity 景观,增强Terrain材质表现的插件——GTS

GTS地形着色器是一款专为Unity设计的强大工具,可解决地形纹理绘制和光照处理的难题。它提供一键式配置,支持实时调整地形效果,包含细节注入、高度混合、雪注入等核心功能,并兼容网格地形和低多边形模型。插件完美集成Gaia天气系统,支持HDRP细分效果。安装后通过GTS管理器创建配置文件并应用到地形,即可快速生成高质量地形渲染。其模块化设计包含全局设置、网格转换和细节调整等面板,使开发者能灵活控制地形表现,显著提升视觉效果与性能表现。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1564

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

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

Made In SQL 1055

【android bluetooth 案例分析 01】【HiCar 详解 3】【hicar时如何交换Wifi参数的】

如果直接使用 L2CAP(不经过 RFCOMM),会需要额外的协议来保证可靠性,而 RFCOMM 天然支持。BLE 广播的数据长度受限(31 字节 / 255 字节扩展),不适合传输复杂的 Wi-Fi 连接参数。使用 RFCOMM 传输参数,可以兼容不同厂商的车机和手机,而无需依赖特殊的蓝牙功能。手机解析这些参数,并使用 Wi-Fi Direct 连接到车机。,然后才能让 Wi-Fi Direct 进行真正的数据传输。,适合传输 Wi-Fi 连接参数等关键数据。,可以安全地交换 Wi-Fi 连接信息。

奔跑吧 android 的博客 1740

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

python中的高阶函数

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

求真、务实 1万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

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

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

2401_85727638的博客 1315

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

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、付费专栏及课程。

余额充值