python入门day12匿名函数&递归函数

匿名函数的使用

#匿名函数--没有名字的函数,简化函数定义
#格式:lambda表达式 参数1,参数2... : 运算

s = lambda a,b:a+b
print(s)#<function <lambda> at 0x000001F30E522E18>
result = s(3,4)
print(result)#7

s1=lambda  x,y:x*y
print(s1(2,5))#10


#匿名函数作为参数(函数作为参数)
#x,y是变量,func是函数
def func(x,y,func1):
    print(x,y)
    print(func1)
    print(func1(x,y))

#调用func
func(1,2,lambda a,b:a+b)
'''
1 2
<function <lambda> at 0x000001A5E104A0D0>
3
'''

匿名函数与内置函数的应用–max

#匿名函数与内置函数结合使用
#常见内置函数 max sorted zip...
#匿名函数用lambda来表示 且通常将他作为函数的参数来使用

list1=[3,5,8,9,0]

m=max(list1)
print('列表最大值:',m)



list2=[{'a':10,'b':20},{'a':13,'b':11},{'a':8,'b':11}]
#返回a最大值的那个字典
m=max(list2,key=lambda x:x['a'])
print('a是最大值的字典为:',m)
#比较的类型不能直接用大于小于号比较,此时用key改变比较依据
#迭代过程中取出一个字典,赋值给x,我取出字典里的键为a的值作为比较的依据
'''
lambda x:x['a']
==>
def func(d):
    return d['a']
'''

匿名函数与内置函数的应用–map

#内置函数map
#map()对可迭代序列进行统一操作
list1=[4,6,82,3,6,9]

result = map(lambda x:x+2,list1)
print(result)
print(list(result))
'''
<map object at 0x000001C8333D39B0>
[6, 8, 84, 5, 8, 11]
'''

#不使用map实现上诉功能
for index,i in enumerate(list1):
    list1[index]=i+2


#传过来的是偶数就返回本身,不是就返回本身+1
func=lambda x:x if x%2==0 else x+1
print(func(5))#6


#对列表的奇数+1,偶数不变
list1=[4,6,82,3,6,9]
result=map(lambda x : x if x%2==0 else x+1,list1)
print(list(result))#[4, 6, 82, 4, 6, 10]

匿名函数与内置函数的应用–reduce

#内置函数reduce()
#对列表中的元素进行加减乘除运算的函数
#函数工具类模块
from functools import reduce
tuple1=(1,2,3,4,5)
result=reduce(lambda x,y:x+y,tuple1)
print(result)#15


tuple2=(1,)
result=reduce(lambda x,y:x+y,tuple2,10)
print(result)#11

匿名函数与内置函数的应用–filter

#内置函数filter  过滤作用
list1=[12,6,8,9,34,88]
result = filter(lambda x:x>10,list1)
print(list(result))#[12, 34, 88]


students=[
    {'name':'tom','age':20},
    {'name':'lucy','age':19},
    {'name':'lily','age':13},
    {'name':'mark','age':21}
]
#找出所有年龄大于20岁的学生的信息
result = filter(lambda x:x['age']>=20,students)
print(list(result))
#[{'name': 'tom', 'age': 20}, {'name': 'mark', 'age': 21}]


匿名函数与内置函数的应用–sorted

#按照年龄从小到大排序
students=[
    {'name':'tom','age':20},
    {'name':'lucy','age':19},
    {'name':'lily','age':13},
    {'name':'mark','age':21}
]
student = sorted(students,key=lambda x:x['age'])#用key指定按哪个排序
print(student)
#[{'name': 'lily', 'age': 13}, {'name': 'lucy', 'age': 19}, {'name': 'tom', 'age': 20}, {'name': 'mark', 'age': 21}]

递归函数

#递归函数--函数自己调用自己
'''
回顾讲过的函数类型
普通:def func():pass
匿名函数:lambda 函数:返回结果
递归函数:普通函数的一种表现形式

特点:
1.递归函数必须要设定终点,即下面的0
2.通常有入口,即下面的5
3.自身调用自身
'''
def f1(n):
    if n==0:
        return
    print('--->',n)
    f1(n-1)
f1(5)
'''
---> 5
---> 4
---> 3
---> 2
---> 1
'''
#求列表的累加和

def sum(n):
    if n==0:
        return n
    return n + sum(n-1)

print(sum(10))#55
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值