• 递归和迭代器


    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. 递归必须要规律
  • 相关阅读:
    《面向对象编程》c++ primer 第15章
    extern的作用(综合网络)
    C程序内存区域分配(5个段作用)
    鼓舞自己的名言
    快速指数算法 和 求逆元算法
    HP Xeon 55xx上GPU的带宽问题
    Ubuntu12.04 安装ibusfbterm0.9.1
    Win7下读写Ext2/Ext3/Ext4文件系统
    fbv安装 为console添加背景图片
    CentOS6/7安装fcitx4.2.5
  • 原文地址:https://www.cnblogs.com/kaizi111/p/11623511.html
Copyright © 2020-2023  润新知