栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python 匿名函数和递归

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python 匿名函数和递归

文章目录
    • 一、匿名函数的格式
    • 二、匿名函数作为参数
    • 三、与max函数结合使用
    • 四、与map函数结合使用
    • 五、和reduce函数结合使用
    • 六、与filter函数结合
    • 七、变量作用域
    • 八、递归函数

一、匿名函数的格式

匿名函数简化了函数的定义,通过lambda 参数1,2…:运算返回的格式创建一个函数对象,我们用f来接受,然后f就相当于函数名,我们调用的时候就用函数名+(参数).

#匿名函数:简化函数定义
#格式: lambda 参数1,参数2:运算
f=lambda a,b:a+b
sum=f(2,0)
print(sum)
二、匿名函数作为参数
#匿名函数作为参数
def func(x,y,func):
    print(x,y)
    print(func)
    print(func(x,y))
func(500,20,lambda x,y:x+y)
三、与max函数结合使用

max()函数可以用力得到一个可迭代对象中的一个最大值,但是,如果出现像list2列表中的情况,列表中全是字典,我们想知道在所有字典中a的最大值,显然用max(list2)是不可行的,我们只好这样,定义寻找最大值的key,定义以key=lambda x:x['a]为关键字进行找最大值。

list1=[3,5,8,9,0]
m=max(list1)
print("列表的最大值:",m)
list2=[{'a':10,'b':20},{'a':13,'b':20},{'a':29,'b':20}]
m=max(list2,key=lambda x:x['a'])
print("列表最大值:",m)
四、与map函数结合使用

map的用法:map(对可迭代对象的每个元素进行的操作,可迭代对象)

#方式1
list1=[3,4,6,7,8,9,9,0,2,5]
result=map(lambda x:x+2,list1)
print(list(result))
#方式2
for index,i in enumerate(list1):
    print(index,end=' ')
    print(i)
    print()
    list1[index]=i+2
print()
print(list1)
五、和reduce函数结合使用

进行累加操作和类减之类的操作

from functools import reduce
tuple1=(3,5,7,8,9,1)
result=reduce(lambda x,y:x+y,tuple1)
print(result)
#首先取x=3,y=5相加为8,然后将8放入元组首位置,再取x=8,和y=7......
tuple2=(1,) #只有一个元素的元组
result=reduce(lambda x,y:x+y,tuple2,10)  #将10作为默认值
print(result)
#可试试减法和别的
六、与filter函数结合
list1=[12,6,8,9,23,89,1,345]
result=filter(lambda x:x>10,list1)
print(list(result))
students=[
    {'name':'tom','age':20},
    {'name':'lucy','age':19},
    {'name':'liming','age':24},
    {'name':'lihua','age':18}
]
#找出所有年龄大于20岁的学生
result=filter(lambda x:x['age']>20,students)
print(list(result))
#按照年龄大小排序
result=sorted(students,key=lambda x:x['age'])
print(result)
七、变量作用域

函数作用域: LEGB
L:local 本地 局部变量
E: encloseing 嵌套
G: global 全局
B: built-in 内置的

a=100
def func():
    a=10
    def inner_func():
        #a=1
        print(a)
        print(max)   #内置的
    inner_func()
func()
八、递归函数

特点:
1.有终止条件
2.自己调用自己
3.通常有一个入口

#递归函数
def sum(n): #1~n
    if n==0:
        return 0
    else:
        return n+sum(n-1)
result=sum(10)
print(result)


汉诺塔

num=0
def  han(n,ftower,ttower,atower):
    if n==1: #直接将盘从原始塔移动到目标塔
        print(n,"from",ftower,"to",ttower)
    else:
        #先借助目标塔将n-1个盘子移动到过渡塔
        han(n-1,ftower,atower,ttower)
        #然后将最后一个盘从原始塔移动到目标塔
        print(n,"from",ftower,"to",ttower)
        #最后借助原始塔,将前n-1个盘从过度塔移动到目标塔
        han(n-1,atower,ttower,ftower)
#主程序
a=int(input("please enter n:"))   #输入有几个盘子
han(a,"A","B","C")
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1002185.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号