zoukankan      html  css  js  c++  java
  • 函数的小知识

    函数的递归

    函数在调用阶段直接或间接调用自身

    #直接调用
    def func(n):
        print('from func',n)
        func(n+1)
    func(1)
    
    #间接调用
    def outter():
        print('from outter')
        inner()
    def inner():
        print('from inner')
        outter()
    inner()

    递归分为两个阶段:

    1.回溯:一次次重复的过程,但是这个重复的过程必须建立在问题的复杂度越来越低的基础上,直到有一个最终的结束条件

    2.递归:一次次往回推到的过程

    补充知识点:

    import sys
    sys.getrecursionlimit()
    sys.setrecursionlimit(2000)  #定义深度

    二分算法:

      算法:把解决问题的效率变得更高

    二分法:容器类型里面的数字必须要有大小顺序

    l = [1,3,5,12,57,89,101,123,146,167,179,189,345]

    l = [1,3,5,12,57,89,101,123,146,167,179,189,345]
    num = 179
    def get_num(l,num)
        if not l:
            print('no')
            return
        lis = len(l) // 2
        if num < l[lis]:
            l_left = l[:l[lis]]
            get_num(l_left,num)
        elif num > l[lis]:
            l_right =l[l[lis]+1:]]
            get_num(l_right,num)
        else:
            print('find it',num)        

    三元表达式

      x if x > y else y

      当x的值大的时候返回x,反之返回y

    三元表达式固定表达式
      值1 if 条件 else 值2
      条件成立 值1
      条件不成立 值2

    三元表达式的应用场景:

    goods = input('>>:')
    res = 'apple' if goods == 'y' else 'banana'
    print(res)

    列表生成式:

    l = ['yzy','yyy','ccc']
    lis = ['%s_nb' for name in l ]
    print(lis)
    l = ['%s_nb', '%s_nb', '%s_nb','yyy']
    res = [name for name in l if name.endswith('b')]
    print(res)

    先for循坏依次取出列表里面的每一个元素

    然后交由if判断 条件成立才会交给for前面的代码

    条件不成立 当前的元素直接舍弃

    字典生成式:

    l1 = ['yzy','123','read']
    d = {k:v for k,v in enumerate(l1) if j != '123'}
    print(d)

    匿名函数

      1.没有名字的函数

      2.匿名函数的特点

        临时存在用完就没了

    def my_sum(x,y)
        return x + y
     res = (lambda x,y:x+y)
    print(res)
    
    
    lambda x,y:x+y
    #左边的相当于函数的形参
    #右边的相当于函数的返回值
    #匿名函数通常不会单独使用,是配合内置函数一起使用

    常用的内置函数

    max

     d = {
         'yzy':9000,
         'abb':2000,
         'yyy':10000
     }
     res = max(d,key=lambda name:d[name])
     print(res)
    map 映射
    l = [1,2,3,4,5]
    print(list(map(lambda x:x+5,l)))
    zip拉链
    l1 = [1,2]
    l2 = ['yzy','yyy']
    print(list(zip(l1,l2)))
    reduce
    
    from functools import reduce
    l = [1,2,3,4,5]
    print(reduce(lambda x,y:x+y,l))
  • 相关阅读:
    IOS7 About
    iOS Newsstand Tutorial
    微信开发商
    网络流量监控相关资料
    EDM about
    thinkphp验证码的实现
    thinkphp表单上传文件并将文件路径保存到数据库中
    thinkphp分页实现
    linux 系统简单备份
    Google Hacking总结
  • 原文地址:https://www.cnblogs.com/KrisYzy/p/11176804.html
Copyright © 2011-2022 走看看