python秃头之路day12

本文深入解析了Python中的匿名函数与递归函数的使用技巧。从匿名函数的多种定义方式到递归函数的经典应用案例,如阶乘计算、汉诺塔问题及日期计算,全面展示了函数编程的魅力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、匿名函数
多用于防止数据污染,需要函数进行作用域隔离,但代码复杂度极低并且只需要运行一次的情况

1、匿名函数方式1
利用函数赋值于的变量写入参数值

avg = lambda total,count:total/count
print(avg(12,25))#4.0
print(type(avg(12,3)))#float

2、匿名函数方式2
在匿名函数后面写入参数值

ret=(lambda a,b:a+b)(1,2)
print(ret)#3
print(type(ret))#int

3、携带默认参数的匿名函数
默认参数同普通函数

ret=(lambda a,b,c=3:a+b+c)(1,2)
print(ret)#6

4、匿名函数中不定常参数
同普通函数

f=lambda *args:args
f1=lambda **kwargs:kwargs
print(f(1,2,3,4))
print(f1(a=1))

5、用匿名函数找最大值
在匿名函数中使用if else结构

print((lambda a,b,c:c if c >(a if a>b else b) else (a if a>b else b))(1,22,3))#22

6、字典排序
按照字典中某个键的值进行排序

info_list=[{'a':1,'b':2},{'a':1,'b':1},{'a':1,'b':3}]
info_list.sort(key=lambda x:x['b'])
print(info_list)

二、递归函数

1、n!阶乘
常规写法

n=int(input())
def jie(n):
    x=n
    while n>1:
        x=x*(n-1)
        n-=1
    return x
print(jie(n))

递归写法

def fact(n):
    if n==1:
        return 1
    return n * fact(n - 1)
print(fact(3))

2、汉诺塔问题

n=int(input())
def ci(n):
    if n==1:
        return 1
    return 2*ci(n-1)+1
print(ci(n))

3、用函数实现,输入某年某月某日,判断这一天是这一年的第几天(闰年考虑在内)

def nian(y):
    if ((y%4==0)and(y%100!=0))or(y%400==0):
        return -1
    else:
        return -2

def yue(m):
    if m==1:
        return 0
    elif m<=8:
        return +m//2
    else:
        return +(m+1)//2

while 1:
    try:
        a=input('请输入年月日(2019-3-7):')
        a=a.split('-')
        if (len(a)>3)or(m):
            int(a)
        y=int(a[0])
        m=int(a[1])
        d=int(a[2])
        # ~ print(y,m,d)
        if m<=2:
            n=30*(m-1)+yue(m)+d
        else:
            n=30*(m-1)+yue(m)+d+nian(y)

        print(n)
    except:
        print('请输入正确格式')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值