zoukankan      html  css  js  c++  java
  • python基础--函数递归

    1.1 递归的应用场景

    递归是一种编程思想,应用场景:

    1. 在我们日常开发中,如果要遍历一个文件夹下面所有的文件,通常会使用递归来实现;
    2. 在后续的算法课程中,很多算法都离不开递归,例如:快速排序。

    1.1.1 递归的特点

    • 函数内部自己调用自己
    • 必须有出口

    1.2 应用:3以内数字累加和

    • 代码
    # 3 + 2 + 1
    def sum_numbers(num):
        # 1.如果是1,直接返回1 -- 出口
        if num == 1:
            return 1
        # 2.如果不是1,重复执行累加并返回结果
        return num + sum_numbers(num-1)
    
    
    sum_result = sum_numbers(3)
    # 输出结果为6
    print(sum_result)
    
    • 执行结果

    二,lambda 表达式

    2.1 lambda的应用场景

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

    2.2 lambda语法

    lambda 参数列表 : 表达式
    

    注意

    • lambda表达式的参数可有可无,函数的参数在lambda表达式中完全适用。
    • lambda表达式能接收任何数量的参数但只能返回一个表达式的值。

    快速入门

    # 函数
    def fn1():
        return 200
    
    
    print(fn1)
    print(fn1())
    
    
    # lambda表达式
    fn2 = lambda: 100
    print(fn2)
    print(fn2())
    

    注意:直接打印lambda表达式,输出的是此lambda的内存地址

    2.3 示例:计算a + b

    2.3.1 函数实现

    def add(a, b):
        return a + b
    
    
    result = add(1, 2)
    print(result)
    

    思考:需求简单,是否代码多?

    2.3.2 lambda实现

    fn1 = lambda a, b: a + b
    print(fn1(1, 2))
    

    2.4 lambda的参数形式

    2.4.1.无参数

    fn1 = lambda: 100
    print(fn1())
    

    2.4.2.一个参数

    fn1 = lambda a: a
    print(fn1('hello world'))
    

    2.4.3.默认参数

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

    2.4.4.可变参数:*args

    fn1 = lambda *args: args
    print(fn1(10, 20, 30))
    

    注意:这里的可变参数传入到lambda之后,返回值为元组。

    2.4.5.可变参数:**kwargs

    fn1 = lambda **kwargs: kwargs
    print(fn1(name='python', age=20))
    

    2.5 lambda的应用

    2.5.1. 带判断的lambda

    fn1 = lambda a, b: a if a > b else b
    print(fn1(1000, 500))
    

    2.5.2. 列表数据按字典key的值排序

    students = [
        {'name': 'TOM', 'age': 20},
        {'name': 'ROSE', 'age': 19},
        {'name': 'Jack', 'age': 22}
    ]
    
    # 按name值升序排列
    students.sort(key=lambda x: x['name'])
    print(students)
    
    # 按name值降序排列
    students.sort(key=lambda x: x['name'], reverse=True)
    print(students)
    
    # 按age值升序排列
    students.sort(key=lambda x: x['age'])
    print(students)
    

    # 总结

    • lambda

      • 语法
      lambda 参数列表: 表达式
      
      • lambda的参数形式

        • 无参数
        lambda: 表达式
        
        • 一个参数
        lambda 参数: 表达式
        
        • 默认参数
        lambda key=value: 表达式
        
        • 不定长位置参数
        lambda *args: 表达式
        
        • 不定长关键字参数
        lambda **kwargs: 表达式
        
  • 相关阅读:
    Educational Codeforces Round 83 --- F. AND Segments
    Educational Codeforces Round 83 --- G. Autocompletion
    SEERC 2019 A.Max or Min
    2019-2020 ICPC Southwestern European Regional Programming Contest(Gym 102501)
    Educational Codeforces Round 78 --- F. Cards
    今天我学习了一门全新的语言
    codeforces 1323D 题解(数学)
    Educational Codeforces Round 80 (Div. 2) 题解 1288A 1288B 1288C 1288D 1288E
    Educational Codeforces Round 81 (Div. 2) 题解 1295A 1295B 1295C 1295D 1295E 1295F
    Codeforces Round #617 (Div. 3) 题解 1296C 1296D 1296E 1296F
  • 原文地址:https://www.cnblogs.com/chenpeng03/p/13627049.html
Copyright © 2011-2022 走看看