首页 > 编程语言 > 详细

python递归函数、内置函数

时间:2019-08-24 00:52:54      阅读:106      评论:0      收藏:0      [点我收藏+]

递归函数的特点:

  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)))

  

 

python递归函数、内置函数

原文:https://www.cnblogs.com/zzzhao/p/11402853.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!