• python递归函数、内置函数


    递归函数的特点:

      1,调用自身函数;

      2,有一个结束条件;

      3,但凡是递归可以写的,循环都可以实现;

      4,递归的效率在很多时候会很低;

    def f(n):
      if n == 1:
        return 1
      return n*f(n-1)
    

      斐波那契数列:

    #循环实现
    def fibo(n):
     
        before=0
        after=1
        for i in range(n-1):
            ret=before+after
            before=after
            after=ret
     
        return ret
    

      

    #递归实现
    def fibo_new(n):#n可以为零,数列有[0]
     
        if n <= 1:
            return n
        return(fibo_new(n-1) + fibo_new(n-2))
    

     内置函数: 

     1, filter(function, sequence) :

      对sequence中的item依次执行function(item),将执行结果为True的item做成一个filter object的迭代器返回。可以看作是过滤函数。

     

    str = ['a', 'b','c', 'd']
     def fun1(s):
        if s != 'a':
            return s
    ret = filter(fun1, str)
    print(list(ret))# ret是一个迭代器对象
    

    2,map(function, sequence) :

      对sequence中的item依次执行function(item),将执行结果组成一个map object迭代器返回.

    str = [1, 2,'a', 'b']
    def fun2(s):
        return s + "alvin"
    ret = map(fun2, str)
    print(ret)      #  map object的迭代器
    print(list(ret))#  ['aalvin', 'balvin', 'calvin', 'dalvin']
    

    3,reduce(function, sequence, starting_value):

      对sequence中的item顺序迭代调用function,如果有starting_value,还可以作为初始值调用.

    from functools import reduce
    def add1(x,y):
        return x + y
    
    print (reduce(add1, range(1, 101)))
    

     4,lambda 

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

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

    #通过Reduce函数加lambda表达式式实现阶乘:
    from functools import reduce
    print (reduce(lambda x,y: x*y, range(1,6)))
    

      

  • 相关阅读:
    下一座“金矿”:移动医疗的契机和风险
    android ViewStub简单介绍
    IT人员必须掌握的10项软技能
    Android ListView item 点击事件失效问题的解决
    前端之Android入门(3):MVC模式(上)
    Android 错误提示: Can't create handler inside thread that has not called Looper.prepare()
    Android 性能优化提示
    Android 学习资源
    元素水平对齐
    div垂直居中
  • 原文地址:https://www.cnblogs.com/zzzhao/p/11402853.html
Copyright © 2020-2023  润新知