python:递归函数与lambda函数

news/2025/2/9 0:57:14 标签: python, 开发语言, 算法

递归函数:1.函数内调用自己 2.有一个出口

1.递归

一.有出口时

python">def sum(num):
    if num==1:
        return 1
    return num+sum(num-1)
a=sum(3)
print(a)
#num=3 3+sum(2) 
#num=2 2+sum(1) 
#num=1是返回1
#即3+sum(2)即3+2+sum(1)即3+2+1

运行结果

python">6

二.无出口时

python">def sum(num):
    # if num==1:
    #     return 1
    return num+sum(num-1)
a=sum(3)
print(a)
#num=3 3+sum(2)
#num=2 2+sum(1)
#num=1是返回1
#即3+sum(2)即3+2+sum(1)即3+2+1

运行结果

python">  [Previous line repeated 996 more times]
RecursionError: maximum recursion depth exceeded

即无出口时递归会有递归深度的,超过递归深度就会报错。

2.lambda函数

lambda表达式:如果函数只有一个返回值并且只有一句代码,就可以使用lambda函数进行简化。

形式:lambda  参数列表 :表达式

案例一:

python">def mu():
    return 10
a=lambda :10
print(a())

运行结果

python">10

案例二:两位数加法

python">def add(a,b):
    return a+b
re=add(2,3)
print(re)
c=lambda a,b:a+b
print(c(3,4))

运行结果

python">5
7

3.lambda函数的参数

1.无参数

python">f=lambda :10
print(f())

运行结果

python">10

2.一个参数

python">f=lambda a:a
print(f(20))

运行结果

python">20

3.默认参数

python">f=lambda a,b,c=10:a+b+c
print(f(1,2))
print(f(1,2,3))

运行结果

python">13
6

4.可变参数 *args

python">f=lambda *args:args
print(f(1,2,3,4,5,6,7))

运行结果

python">(1, 2, 3, 4, 5, 6, 7)

4.可变参数 **kwargs

python">f=lambda **kwargs:kwargs
print(f(name='python',stu='muxue'))

运行结果

python">{'name': 'python', 'stu': 'muxue'}

4.带有判断的lambda函数

python">f=lambda a,b:a if a>b else b
print(f(3,4))

运行结果

python">4

5.使用lambda函数进行列表排序

python">stu=[{
    'name':'jack','age':20 ,'gender':'man'},
    {'name':'black','age':21 ,'gender':'man'},
    {'name':'rose','age':19 ,'gender':'woman'},
    {'name':'aa','age':18,'gender':'man'}
]
#按照年龄进行升序排序
stu.sort(key=lambda x:x['age'])
print(stu)
#按照年龄进行降序排序
stu.sort(key=lambda x:x['age'],reverse=True)#reverse默认为False即升序
print(stu)

运行结果

python">[{'name': 'aa', 'age': 18, 'gender': 'man'}, {'name': 'rose', 'age': 19, 'gender': 'woman'}, {'name': 'jack', 'age': 20, 'gender': 'man'}, {'name': 'black', 'age': 21, 'gender': 'man'}]
[{'name': 'black', 'age': 21, 'gender': 'man'}, {'name': 'jack', 'age': 20, 'gender': 'man'}, {'name': 'rose', 'age': 19, 'gender': 'woman'}, {'name': 'aa', 'age': 18, 'gender': 'man'}]


http://www.niftyadmin.cn/n/5845408.html

相关文章

GaussDB用户权限管理

GaussDB用户权限管理 系统权限系统权限查看系统权限授予 角色权限角色权限查看角色权限授予 对象权限对象权限查看对象权限授予 GaussDB数据库中的权限管理可以分为三个级别: 系统权限:包括SYSADMIN、CREATEDB、CREATEROLE、AUDITADMIN和LOGIN等权限。角…

Vue(3)

一.生命周期及其四个阶段 Vue生命周期&#xff1a;一个Vue实例从创建到销毁的整个过程 生命周期四个阶段&#xff1a;①创建②挂载③更新④销毁 <body><div id"app"><h3>{{ title }}</h3><div><button click"count--"&…

暴雨信创服务器推动DeepSeek本地化部署

当前&#xff0c;人工智能领域最受瞩目的产品&#xff0c;非DeepSeek莫属。凭借高性能、低成本及开源等显著优势&#xff0c;DeepSeek系列模型自发布以来便迅速引爆市场&#xff0c;赢得了科技界的广泛赞誉与高度关注&#xff0c;成为引领行业潮流的标杆产品。在国产大模型取得…

防火墙与Squid代理服务器

服务器的安装、搭建与配置准备前期 虚拟机版本:redhat Enterprise Linux Server release 7.2(Maipo)系统架构:x86虚拟机服务器地址:192.168.195.3Window地址:192.168.195.237进行ISO挂载操作进入root模式[yonghu@localhost 桌面]#su 返回上级目录文件进入media文件中,创建…

react的antd表格数据回显在form表单中

1、首先为table添加编辑按钮 {title: 操作,align: center,render: (_: any, record: any) > (<div style{{ display: flex, alignItems: center, justifyContent: space-evenly }}><Buttonsize"small"onClick{() > deitor(record)} style{{ margin…

备战蓝桥杯:二进制枚举之子集问题

78. 子集 - 力扣&#xff08;LeetCode&#xff09; 利用二进制枚举的方式&#xff0c;把所有的情况都表示出来 比如我们测试用例是[1,2,3] 下标和值对应是 0-1 1-2 2-3 我们用0到7的二进制就能把所有情况枚举出来 0:0000 ---- 表示三个元素都不选 [] 1:0001-----表示只…

【使用小技巧】git rebase命令详解

Git Rebase命令介绍&#xff1a;场景与实例详解 在Git版本控制系统中&#xff0c;git rebase是一个强大且实用的命令&#xff0c;它用于重新整理提交历史&#xff0c;使提交记录更加线性和清晰。本文将通过具体场景和实际例子&#xff0c;详细介绍git rebase命令的使用方法和效…

【合集】Java进阶——Java深入学习的笔记汇总 amp; 再论面向对象、数据结构和算法、JVM底层、多线程

前言 spring作为主流的 Java Web 开发的开源框架&#xff0c;是Java 世界最为成功的框架&#xff0c;持续不断深入认识spring框架是Java程序员不变的追求&#xff1b;而spring的底层其实就是Java&#xff0c;因此&#xff0c;深入学习Spring和深入学习Java是硬币的正反面&…