• 学习python的day10之递归与内置函数


    一、递归

    递归的特点:

    函数内部自己调用自己

    必须出口

    需求:求3以内的累加和

    def sum(a):
        if a == 1:
            return 1
        return a+sum(a-1)
    result = sum(3)
    print(result)
    '''
    输出:
    6
    '''

    执行流程

    lambda表达式

    如果一个函数有一个返回值,并且只有一句代码,可以使用lambda简化  

    语法:lambda 参数列表:表达式

    def fn1():
        return 100
    result = fn1()
    print(result)
    print('*'*10)
    fn2 = lambda :100
    print(fn2)
    print(fn2())
    '''
    输出:
    100
    **********
    <function <lambda> at 0x0000028989A989D0>
    100
    '''

    如果fn2不加括号,输出的是内存地址

    注意:

    lambda表达式的参数可有可无,函数的参数在lambda表达式中完全适用

    lambda表达式能接收任何数量的参数但只能返回一个表达式 的值

    lambda的参数形式

    无参数

    print((lambda :100)())

    一个参数

    print((lambda a:a)('hi'))

    默认参数

    print((lambda a, b, c=100:a+b+c)(10,20))

    可变参数:**kwargs

    print((lambda **kwargs:kwargs)(name='z',age=2))

    lambda的应用

    带判断的lambda

    print((lambda a,b:a if a>b else b)(100,120))
    '''
    输出:
    120
    '''

    列表数据按字典key值排序

    list1 = [{'name':'A','age':20}, {'name':'B','age':23}, {'name':'C','age':18}]
    list1.sort(key=lambda s:s['age'],reverse=True)
    print(list1)
    '''
    输出:
    [{'name': 'B', 'age': 23}, {'name': 'A', 'age': 20}, {'name': 'C', 'age': 18}]
    '''

    二、内置函数

    高阶函数

    把函数作为参数传入,这样的函数成为高阶函数,高阶函数是函数式编程的体现。函数式编程指的就是这种高度抽象的编程范式。

    体验高阶函数

    在python中,abs()函数可以完成对数字的绝对值计算

    round()函数可以完成对数字的四舍五入的计算

    把函数作为参数传入的应用

    def sum(a, b, f):
        return f(a)+f(b)
    print(sum(1,-3,abs))
    '''
    输出:
    4
    
    '''

    函数式编程大量使用函数,减少了代码的重复,因此程序比较短,开发速度较快

    内置高阶函数

    map()

    map(func,lst),将传入的函数变量func作用到lst变量的每个元素中,并将结果组成新的列表(python2)/迭代器(python3)返回

    list1 = [1, 2, 3, 4, 5]
    def fun(x):
        return x**2
    result = map(fun, list1)
    print(result)
    print(list(result))
    print(list1)
    
    '''
    输出:
    <map object at 0x000001334F847F40>
    [1, 4, 9, 16, 25]
    [1, 2, 3, 4, 5]
    '''

    reduce()

    reduce(func,lst),其中func必须有两个参数。每次func计算的结果继续和序列下一个元素做累积计算

    注意:reduce()参入的参数func必须接收两个参数。

    import functools
    
    list1 = [1, 2, 3, 4, 5]
    def fun(a,b):
        return a + b
    result = functools.reduce(fun,list1)
    print(result)
    
    '''
    输出:
    15
    '''

    filter()

    filter(func,lst)函数用于过滤序列,过滤掉不符合条件的元素,返回一个filter对象。如果要转换成列表,可以使用list()转换。

    list1 = [1, 2, 3, 4, 5]
    def fun(a):
        return a % 2 == 0
    result = filter(fun,list1)
    print(list(result))
    '''
    输出:
    [2, 4]
    '''
  • 相关阅读:
    Linux内核分析第十八章读书笔记
    Linux内核分析作业 NO.5
    Linux内核分析第五章读书笔记
    Linux内核分析 一二章读书笔记
    Linux内核分析作业 NO.4
    Linux内核分析 NO.3
    Linux内核分析作业 NO.2
    Linux内核分析作业 NO.1
    论自我,论异类——《无声告白》
    愿随命运颠沛流离——《孤儿列车》读后感
  • 原文地址:https://www.cnblogs.com/scheduled/p/13839639.html
Copyright © 2020-2023  润新知