递归和迭代器

day13 递归和迭代器

迭代器

不是函数只是一个称呼

可迭代对象是含有__iter__方法的为可迭代对象

迭代器是含有__iter__ ,__next__方法的为迭代器

**除了数字类型,所有数据类型都是可迭代对象 **

for循环原理(for循环本质就是一个while循环,只不过是一个一定可控的while循环)

dic = {'a':1,'b':2,'c':3}

dic.__iter__.__next__ 迭代取值---》基于上一个值

dic_iter = dic.__iter__()
while Ture:
    try:
        print(dic.__iter__.__next__())
    except  StopIteration:
        break
        
for循环原理
def for(iterable):
    iterator = iterable.__iter__()
    while Ture:
        try:
            print(iterator.__next__())
        except StopIteration:
            break

三元表达式

条件成立走这里 if 条件 else 条件不成立走这里

列表推导式

lt = [i**2 for i in range(10)]

字典生成式

dic = {i:i**2 for i in range(10)}

zip()

对可迭代对象逐个取值,不同可迭代对象同时提取出相同位置元素

生成器

generator 本质是一个迭代器

g = (i for i in range(10))

含有yield关键字的函数叫做生成器

def func():

​ yield 3 一个yield相当于一个next;暂停函数

​ yield 4

func() #得到一个生成器-----> 生成器本质就是迭代器

yield的特性

  1. 暂停函数
  2. 通过next取值

递归

函数a内部直接调用函数a本身

每一次递归,会不会结束函数?不会,并且每一次递归都会开辟内存空间,如果一直开辟内存就炸掉了,所以最多递归系统默认1000次

递归必须要有推出条件

递归

  1. 递归必须要调用自己
  2. 递归必须要有退出条件
  3. 递归必须要规律
posted @ 2019-10-04 22:19  小凯子+  阅读(221)  评论(0编辑  收藏  举报