python匿名函数lambda及递归函数

2023年 7月 11日 86.0k 0

匿名函数 lambda

lambda 参数列表:运算表达式

def fn(x):
    return x*x
print(fn(5))
f = lambda x:x*x
print(f(5))

python匿名函数lambda及递归函数

  • lambda并不会带来程序运行效率的提升,只会使代码更加的简洁。
  • 如果使用lambda,lambda内不要有循环,因为可读性不好,有的话还是使用标准函数完成,目的是为了代码有可重复性和可读性。
  • lambda只是为了减少单行函数的定义而存在,如果一个函数只有一个返回值,只有一句代码,就可以使用lambda。

高阶函数

高阶函数其实就是把函数作为参数传入,就是把一个函数作为另一个函数的参数传入。

abs()完成对数字绝对值计算

print(abs(-5))

python匿名函数lambda及递归函数

sum() 求和

sum(可迭代对象,指定一个相加的参数如果没有默认为0)

print(sum([1,2,3,4,5]))  
print(sum((1,2,3,4,5),1))  # 元组计算总和后再加  1

python匿名函数lambda及递归函数

round()四舍五入 精度有问题

print(round(4.3))
print(round(4.6))
print(round(4.5)) #雷区

python匿名函数lambda及递归函数

任意两个数字,对两个数字求绝对值后进行求和

def num_sum(x,y):
    return abs(x) + abs(y)
print(num_sum(-6,-2))

python匿名函数lambda及递归函数

任意两个数字,对两个数字求四舍五入后进行求和

def num_round(x,y):
    return round(x) + round(y)
print(num_round(-6.2,-2.5))

python匿名函数lambda及递归函数

def num_abs(x,y,f):
    return f(x) + f(y)
print(num_abs(-6.2,-2.5,abs)) #把abs赋值给f
def num_abs(x,y,f):
    return f(x) + f(y)
print(num_abs(-6.2,-2.5,round)) #把round赋值给f

python匿名函数lambda及递归函数

函数三剑客:map,reduce,filter

map()

map的返回结果是一个迭代器,想看最终结果要转为list

map(func,seq)第一个参数是给一个函数,第二个是给一个序列类型。

将列表序列中各个元素加1

list1 = [1,2,3,4,5]
list2 = []
for i in list1:
    list2.append(i+1)
print(list2)
def add1(i):
    return i+1
print(list(map(add1,list1)))

python匿名函数lambda及递归函数

map内置函数的作用是操作序列中的所有元素,并返回一个迭代器,迭代器要转成列表才能得到最终的值

lambda表达式可以专门配合高阶内置函数做简单实现

list1 = [1,2,3,4,5]
print(list(map(lambda x:x+1,list1)))

python匿名函数lambda及递归函数

reduce()

reduce(func,seq)将每次函数计算的结果据需和序列的下一个元素做累计计算,最终结果只有一个值。

from functools import reduce

list1 = [1,2,3,4,5]
def f(a,b):
    print('进入f')
    print('a=',a)
    print('b=',b)
    return a*b
res = reduce(f,list1)
print(res)

python匿名函数lambda及递归函数

from functools import reduce
list1 = [2,6,8,2,1,3]
print(reduce(lambda a,b:a*b,list1))

python匿名函数lambda及递归函数

  • reduce就是平常遇见累加,累积都可以用,当然累积不一定用reduce
  • reduce返回就是一个值
  • reduce需要导入from functools import reduce

filter() 过滤掉不需要的数据

filter(func,seq) 结果可以通过list转换

保留序列中所有的偶数

list1 = [1,2,3,4,5,6,7,8,9,10]
for i in list1:
    if i % 2 != 0:
        list1.remove(i)
print(list1)

list1 = [1,2,3,4,5,6,7,8,9,10]
def os(x):
    return x % 2 == 0
print(list(filter(os,list1)))

print(list(filter(lambda x:x%2==0,list1)))

python匿名函数lambda及递归函数

sorted()排序

list1 = [2,4,1,5,3,4,86,31,5453,4,1,135]
print(sorted(list1))
print(sorted(list1,reverse=True)) #reverse=True是反转的意思

python匿名函数lambda及递归函数

递归函数

如果一个函数的内部自己调用了自己,就叫递归

内存溢出

  • 如果要定义递归函数,不想让他报错,必须要有出口
  • 不断向出口接近

打印1-500

def func(x):
    if x == 501:
        return
    print(x)
    return func(x+1)

python匿名函数lambda及递归函数

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论