大数据,机器学习,人工智能Python札记呆鸟的Python数据分析

Python札记20_递归、传递

2019-06-27  本文已影响0人  皮皮大

Python中函数也是一种对象,有几种特别的应用:


递归

递归又称为递回,是指在函数的定义中使用函数自身的方法。递归最典型的例子就是斐波那契数列的实现。

def fib(n):
    if n == 0:
        return 0
    elif n == 1:
        return 1
    else:
        return fib(n-1) + fib(n-2)   # 两个函数调用fib()函数本身

if __name__ == "__main__":
    result = fib(4)
image.png

过程解释

总结:每个递归的过程都是朝着最开始的条件挺近。递归是能够被迭代或者循环替代的,后者的效率高于递归。递归慎用。

m = {0:0, 1:1}  # 初始化两个最初的值

def fib(n):
    if not n in m.keys():   # 判断n是否在m的键中
        m[n] = fib(n-1) + fib(n-2)
    return m[n]

if __name__ == "__main__":
    f = fib(5)
image.png

传递函数

将函数当作参数传入到另一个函数中。


def power_seq(func, seq):  #两个参数:一个函数,一个变量
    return [func(i) for i in seq]

def ping_fang(i):
    return i ** 2

if __name__ == "__main__":
    num_seq = [1, 2, 3]
    res = power_seq(ping_fang, num_seq)
image.png

练习题

方法1
将列表list=[1, 2, 3]变成l["1", "2", "3"]

def fun(func, seq):
    return [func(i) for i in seq]

def str_change(i):
    return "{}".format(i)

if __name__ == "__main__":
    list1 = [1, 2, 3]
    res = fun(str_change, list1)
image.png

方法2

list1 = [1, 2, 3]
list2 = []
for i in list1:
    list2.append("{}".format(i))
    print(list2)
image.png
上一篇 下一篇

猜你喜欢

热点阅读