python匿名函数lambda及递归函数

2023-04-2708:26:15编程语言入门到精通Comments912 views字数 1959阅读模式

匿名函数 lambda

lambda 参数列表:运算表达式文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/37342.html

def fn(x):
    return x*x
print(fn(5))
f = lambda x:x*x
print(f(5))
python匿名函数lambda及递归函数
  • lambda并不会带来程序运行效率的提升,只会使代码更加的简洁。
  • 如果使用lambda,lambda内不要有循环,因为可读性不好,有的话还是使用标准函数完成,目的是为了代码有可重复性和可读性。
  • lambda只是为了减少单行函数的定义而存在,如果一个函数只有一个返回值,只有一句代码,就可以使用lambda。

高阶函数

高阶函数其实就是把函数作为参数传入,就是把一个函数作为另一个函数的参数传入。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/37342.html

abs()完成对数字绝对值计算文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/37342.html

print(abs(-5))
python匿名函数lambda及递归函数

sum() 求和文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/37342.html

sum(可迭代对象,指定一个相加的参数如果没有默认为0)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/37342.html

print(sum([1,2,3,4,5]))  
print(sum((1,2,3,4,5),1))  # 元组计算总和后再加  1
python匿名函数lambda及递归函数

round()四舍五入 精度有问题文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/37342.html

print(round(4.3))
print(round(4.6))
print(round(4.5)) #雷区
python匿名函数lambda及递归函数

任意两个数字,对两个数字求绝对值后进行求和文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/37342.html

def num_sum(x,y):
    return abs(x) + abs(y)
print(num_sum(-6,-2))
python匿名函数lambda及递归函数

任意两个数字,对两个数字求四舍五入后进行求和文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/37342.html

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文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/37342.html

map()文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/37342.html

map的返回结果是一个迭代器,想看最终结果要转为list文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/37342.html

map(func,seq)第一个参数是给一个函数,第二个是给一个序列类型。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/37342.html

将列表序列中各个元素加1文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/37342.html

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内置函数的作用是操作序列中的所有元素,并返回一个迭代器,迭代器要转成列表才能得到最终的值文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/37342.html

lambda表达式可以专门配合高阶内置函数做简单实现文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/37342.html

list1 = [1,2,3,4,5]
print(list(map(lambda x:x+1,list1)))
python匿名函数lambda及递归函数

reduce()文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/37342.html

reduce(func,seq)将每次函数计算的结果据需和序列的下一个元素做累计计算,最终结果只有一个值。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/37342.html

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() 过滤掉不需要的数据文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/37342.html

filter(func,seq) 结果可以通过list转换文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/37342.html

保留序列中所有的偶数文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/37342.html

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()排序文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/37342.html

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及递归函数

递归函数

如果一个函数的内部自己调用了自己,就叫递归文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/37342.html

内存溢出文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/37342.html

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

打印1-500文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/37342.html

def func(x):
    if x == 501:
        return
    print(x)
    return func(x+1)
python匿名函数lambda及递归函数
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/37342.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/ymba/37342.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定