zoukankan      html  css  js  c++  java
  • python 匿名函数和递归函数

    匿名函数lambda

    匿名函数:lambda  x,y:x+y

    上述解释:x,y分别是函数的参数,x+y是函数的返回值

          匿名函数的命名规则,用lamdba 关键字标识,冒号(:)左侧表示函数接收的参数(a,b) ,冒号(:)右侧表示函数的返回值(a+b)。

      因为lamdba在创建时不需要命名,所以叫匿名函数

    等同于普通函数:

    def test(x,y):
        return x+y
    

    匿名函数只是没有函数名,主要是配合内置函数使用

    示例1:

    # filter##过滤(将布尔值为True的结果过滤出来)
    name_l=[{"name":"tom","age":222},
          {"name": "alex", "age": 333},
          {"name": "jack", "age": 133},
          {"name": "sun", "age": 363},
          ]
    # 使用匿名函数
    res=filter(lambda d:d["age"]>200,name_l)
    for i in res:
        print(i)
    

    执行结果是:

    {'name': 'tom', 'age': 222}
    {'name': 'alex', 'age': 333}
    {'name': 'sun', 'age': 363}
    

    示例2:

    #map# 合并映射
    l=[1,2,3,4,5]
    res=map(lambda x:x**2,l)#求平列表里的平方值,并以列表的方式呈现
    print(list(res))
    

    执行结果是:

    [1, 4, 9, 16, 25]
    

      

    递归函数:

    定义:在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。

    递归函数的优点: 简单,逻辑清晰。理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰。

    递归特性:

    1. 必须有一个明确的结束条件

    2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少

    3. 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。)

    示例:

    def price(n):
        if n==1:
            return 100
        else:
            return price(n-1)+100#在函数内部调用自身
    print(price(5))
    

    执行结果是:

    500
    

       

  • 相关阅读:
    layer 刷新某个页面
    C# Server.MapPath的使用方法
    .net mvc + layui做图片上传(二)—— 使用流上传和下载图片
    ASP.NET MVC4.0 后台获取不大前台传来的file
    安卓手机修改host
    mvc 页面 去掉转义字符
    educoder数据库实训课程-shell语句总结
    python selenium实现自动操作chrome的某网站数据清洗【此篇为jupyter notebook直接导出.md】
    LeetCode_27移除元素【数组】
    LeetCode_26 删除排序数组中的重复项【数组】
  • 原文地址:https://www.cnblogs.com/xuyuanyuan123/p/6718690.html
Copyright © 2011-2022 走看看