Day11——递归函数/模块/迭代器/生成器

2019-01-07  本文已影响0人  Devil灬

一、递归函数

第一步:确定临界值 - 循环结束的条件,在临界值的地方要让函数结束!
第二步:找关系 - 找当次循环和上次循环的关系;找f(n)和f(n-1)的关系
第三步: 假设函数f的功能已经实现,通过f(n-1)来实现f(n)的功能

实现:1+2+3+...+n
def gx_sum(n):
    # 1.找临界值
    if n == 1:
        return 1

    # 2. 找关系
    return gx_sum(n - 1) + n

print(gx_sum(5))
求斐波那契数列第n个数
def sequence(n):
    # 1. 找临界值
    if n == 1 or n == 2:
        return 1
    # 2. f(n) = f(n-1)+f(n-2)
    return sequence(n-1)+sequence(n-2)

print(sequence(5))

二、模块

导入格式 调用格式 使用范围
import 模块名 模块名.变量 所有的全局变量(包含了变量、函数和类)
from 模块名 import 变量1, 变量2... 直接使用变量 只能使用import后面的变量

三、迭代器

迭代器作为容器,里面的元素只能通过其他序列转换,或者通过生成器生成
迭代器中的元素可以是任何类型的数据


四、生成器

生成器就是迭代器, 迭代器不一定是生成器

调用一个带有yield关键字的函数就能得到一个生成器,调用的时候不会执行函数体,也不会获取返回值,而是产生一个生成器(函数调用表达式就是一个生成器), 这个生成器中的元素就是yield关键字后面的值

生成式:

格式:
生成器 = (表达式 for 变量 in 序列)
生成器 = (表达式 for 变量 in 序列 if 条件语句)

含义:
让变量去序列中取值,每取一个值就将对应的表达式的值作为生成器的元素

示例:
交换字典的key和value的位置

dict1 = {'a': 1, 'b': 2, 'c': 3}
result = dict((x, y) for y, x in dict1.items())
print(result)
上一篇下一篇

猜你喜欢

热点阅读