zoukankan      html  css  js  c++  java
  • 第七章 匿名函数、递归函数

    1. lambda表达式                                                                                        

    # lambda表达式
    # 匿名函数
    # 例子
    def add(a,b):
        return a+b
    add = lambda a,b: a+b
    print(add(1,2))
    # 3
    
    # 求10以内数的平方
    # 列表推导式:
    print([i**2 for i in range(3)])
    # [0, 1, 4]
    
    # 普通函数:
    def func(num):
        return num**2
    for i in map(func,range(3)):
        print(i)
    # 0
    # 1
    # 4
    # lambda表达式
    for i in map(lambda num: num**2, range(3)):print(i)
    # 0
    # 1
    # 4

    2.练习                                                                                                          

    # 1.下面程序的输出结果是:
    d = lambda p:p*2
    t = lambda p:p*3
    x = 2
    x = d(x)
    x = t(x)
    x = d(x)
    print(x)
    # 24
    
    # 2.现有两元组(('a'),('b')),(('c'),('d')),请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}]
    t1 = (('a'),('b'))
    t2 = (('c'),('d'))
    
    #答案一
    test = lambda t1,t2 :[{i:j} for i,j in zip(t1,t2)]
    print(test(t1,t2))
    # [{'a': 'c'}, {'b': 'd'}]
    #答案二
    print(list(map(lambda t:{t[0]:t[1]},zip(t1,t2))))
    # [{'a': 'c'}, {'b': 'd'}]
    #还可以这样写
    print([{i:j} for i,j in zip(t1,t2)])
    # [{'a': 'c'}, {'b': 'd'}]

     3.递归函数                                                                                              

    # 递归 就是自己调用自己
    # 递归需要有一个停止的条件
    def func():
        print(1)
        func()
    func()
    # print(1)
    # RecursionError: maximum recursion depth exceeded while calling a Python object
    # 超过了递归深度错误,没到1000 998
    
    import sys #所有跟解释器打交道的
    sys.setrecursionlimit(100000000)
    def foo(n):
        print(n)
        n += 1
        foo(n)
    foo(1)
    
    
    # 6! 6*5*4*3*2*1
    
    # def fn(n):
    #     if n == 1:return 1
    #     return  n*fn(n-1)
    # print(fn(6))
    # 720
    # 递归 就是自己调用自己
    # 递归需要有一个停止的条件
    def fn(n):
        if n == 1:return 1
        return  n*fn(n-1)
    print(fn(6))
    
    # 递:向下 归:向上
    # 分析
    def fn(6):
        return  6*fn(5)
    def fn(5):
        return  5*fn(4)
    def fn(4):
        return  4*fn(3)
    def fn(3):
        return  3*fn(2)
    def fn(2):
        return  2*fn(1)
    def fn(1):
        if n == 1:return 1
    一鼓作气,再而衰,三而竭。
  • 相关阅读:
    嵌入式开发-基础理论笔记
    如果有,说明你正在堕落!
    不愿意主动联系别人的6大理由
    WCF 服务的ABC之契约(七)
    WCF 服务的ABC之绑定(六)
    WCF 服务的ABC之地址(五)
    WCF 服务与终结点(四)
    WCF 配置文件(三)
    [转载][新手教程] 【小白教程】第一期:谁动了我的Grub?——Grub 修复
    [转载]反无人机企业DroneShield利用声音识别侦测无人机
  • 原文地址:https://www.cnblogs.com/gongniue/p/8993828.html
Copyright © 2011-2022 走看看