zoukankan      html  css  js  c++  java
  • day 12

    1.装饰器的补充:
    from functools import wraps
    ef deco(func):
        @wraps(func)    >>>>可以完全将装饰器包装成与被修饰器一样的注释
        def wrapper(*args, **kwargs):
            res = func(*args, **kwargs)
            return res
        # wrapper.__name__=func.__name__
        # wrapper.__doc__=func.__doc__
        return wrapper
    
    2.函数的递归:函数嵌套调用的一种特殊形式,在调用一个函数的过程中又直接或则间接的调用该函数
       递归调用的两个阶段:
                        1.回溯:一次次递归调用下去,谁白了就一个重复的过程,但需要注意的是每一次的重复问题的规模都应该减少,直到逼近一个最终的结果,即回溯阶段一定要有一个明确的结束条件
    
                        2.递推:往回一层一层推算出结果.
        算法:是如何高效的解决某一个问题的方法和套路
        相关的练习:
    1.
    l=[1,[2,[3,[4,[5,[6,[7,[8,[9,[10,[11,]]]]]]]]]]]
    def foo(l):
        for i in l:
            if type(i)==int:
                print(i)
            else:
                foo(i)
    foo(l)
    2.利用二分法查找列表里面的元素
    nums=[13,15,17,23,31,53,74,81,93,102,103,201,303,403,503,777]
    def foo(number, nums):
        len_list = len(nums) // 2
        print(nums)
        if len(nums) == 0:
            print("do not find ")
            return 1
        if number < nums[len_list]:
            nums = nums[0:len_list]
            return foo(number, nums)
        elif number > nums[len_list]:
            nums = nums[len_list + 1:]
            return foo(number, nums)
        else:
            print("find it ")
    
    foo(101,nums)
    
    三.三元表达式:
    实现的效果是:条件成立的情况下的返回一个值,不成立的情况下返回另一个只值
    
    res=条件成立情况下的返回值 if 条件 else 条件不成立的情况下返回值
    name = input(">>>>>").strip()
    res ="sb" if name=="jjj" else "Nb"
    print(res)
    
    
    四.列表生成式 字典生成式
    
    
    1. 列表生成式:res=[里面的元素在进行才操作 for循环一个列表]
    
    
    
    
    2.字典生成式:利用enumerate内置的函数
    ######################################
    name=["jxl",'egon','yyh']
    age=['12','14','23']
    dis={k:age[i] for i,k in enumerate(name)}
    print(dis)
    ########################################
    
    name=["jxl",'egon','yyh']
    age=['12','14','23']
    dis={}
    for i,k in enumerate(name):
        dis[k]=age[i]
    print(dis)
    
    
    五. 匿名函数:就是没有名字的函数(仅仅临时使用一次,没有重复的使用的需求)
        精髓:就是没有名字,为其绑定名字没有意义,一般与内置函数结合使用
        关键字:lambad      print((lambda x,y:x+y)(11,22))
    
    六.内置函数:  max  min  sorted  map filter reduce
    
    max:可以通过max函数的key参数来改变max函数的比较依据.
        运行原理:max函数会"for 循环"出一个值,
        然后将该值传给key指定的函数,调用key指定的函数,将拿到的给返回值当做比较数据
    salaries={
        'egon':300000,
        'alex':100000000,
        'wupeiqi':10000,
        'yuanhao':2000
    }
    print(max(salaries,key=lambda name:salaries[name]))
    
    min(最小值):与max原理相似
    
    
    sorted;排序
    
    nums=[11,33,22,9,31]
    res=sorted(nums,reverse=True)  >>将得到另一个列表,原来的列表并没有改变
    
    # res=sorted(salaries,key=lambda name:salaries[name],reverse=True)
    # print(res)
    
    map:把一个列表按照我们自定义的映射规则映射成一个新的列表
    names=['alex','lxx','wxx','yxx']
    res=map(lambda name: name + "dSB", names)
    print(list(res))
    
    names=['alex','lxx','wxx','yxx']
    res=[i+"dsb" for i in names]
    print(res)
    
    
    
    filter: 从一个列表中过滤出符合我们过滤规则的值
             运行原理:相当于for循环取出每一个人名,然后传给匿名函数,
                       将调用匿名函数返回值为True的那个人名给留下来
    
    names=['alex_sb','lxx_sb','wxx_sb','egon','yxx']
    
     res=filter(lambda name:name.endswith('sb'),names)
     print(list(res))
    
     print([name for name in names if name.endswith('sb')])
    
    
    reduce: 把多个值合并成一个结果: from functools import reduse
    
    from functools import reduce
    l=['a','b','c','d']
    
    # res=reduce(lambda x,y:x+y,l,'A')
    #'A','a' => 'Aa'
    #'Aa','b'=>'Aab'
    #'Aab','c'=>'Aabc'
    #'Aabc','d'=>'Aabcd'
    # print(res)
  • 相关阅读:
    CentOS 6 + bochs-2.6 + gdb 调试 linux 0.11 —— 成功
    操作系统原理——互斥同步
    CentOS 6 bochs-2.6 gdb 调试 linux 0.11——bochsrc-fd1-gdb.bxrc
    vim+xxd=强大的十六进制编辑器
    【t043】成绩查询
    【u251】心灵的抚慰
    【t041】距离之和
    【t086】防护伞
    Java Web整合开发(37) -- SVN
    ubuntu命令
  • 原文地址:https://www.cnblogs.com/jxl123/p/9409225.html
Copyright © 2011-2022 走看看