zoukankan      html  css  js  c++  java
  • 从迭代器到递归

    迭代器

    迭代器并不是函数,只是一个称呼而已

    python中一切皆对象(数据类型)

    可迭代对象:含有__iter__方法的数据类型就叫做可迭代对象

    python中除了数字类型,多有数据类型都是可迭代对象

    迭代器对象

    迭代器对象就是含有__iter____next__方法的对象

    为什么要有迭代器对象:提供了不依赖索引取值的手段

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

    可迭代对象

    可迭代对象:含有__iter__方法叫做可迭代对象--》除了数字类型都是可迭代对象--》可迭代对象使用__iter__变成迭代器

    迭代器对象

    迭代器对象:含有__iter____next__方法叫做迭代器对象--》只有文件时迭代器对象--》迭代器使用__iter__依然是迭代器

    可迭代对象不一定是迭代器对象;迭代器对象一定是可迭代对象。

    三元表达式

    顾名思义就是只能赚三块钱的表达式

    这只是程序员装逼用的代码,实际上不大会使用
    x=10
    y=20
    print(x) if x>y else print(y)
    

    如果条件成立则走这里,if条件else条件不成立走这里

    列表推导式

    lt=[i**2 for i in range(10)]
    #    ↑这里是可以变的
    print(lt)
    

    字典生成式

    lt1 = ['a', 'b', 'c']
    lt2 = [1, 2, 3]
    
    dic = {k: v ** 2 for k, v in zip(lt1, lt2)}
    print(dic)
    
    
    lt = list('abc')
    print(lt)
    

    用的是两个列表合成一个列表

    生成器生成式

    generator 本质是一个迭代器---》生成器:本质就是迭代器,生成器就是一个自定义的迭代器

    g=(i for i in range(10000000))#这个是生成器生成式
    print(g)#输出的是在硬盘中的位置
    lt=[i for i in range(10000000)]
    print(lt)#输出的是列表里面的元素
    

    生成器表达式: 看成老母鸡,节省内存空间,用就下蛋
    列表推导式: 看成一筐鸡蛋,非常占用内存空间

    生成器

    generator 本质是一个迭代器---》生成器:本质就是迭代器,生成器就是一个自定义的迭代器

    def ge():
        yield 3#一个yield相当于一个next;暂停函数
        yield 4
        
    g = ge()  # 得到一个生成器
    
    print(g.__next__())
    print(g.__next__())
    print(g.__next__())
    
    for i in g:
        print(i)
        
    

    yield的特性

    1.暂停函数

    2.通知next取值

    return的特性

    1.终止函数

    2.通过调用函数拿到值

    写一个range方法

    1.生成器

    2.可变长参数

    递归

    传递;回归

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

    递归:

    1.函数内部调用函数自己

    2.必须要有退出条件

    3.递归必须要有规律

    count = 0
    def a():
        global count
        count += 1
        print(count)
        if count == 5:
            return
        a()
    a()
    
  • 相关阅读:
    Code Review
    关于calendar修改前的代码和修改后的代码
    程序员必备的代码审查(Code Review)清单
    一个数组中最大子数组的和并且加上测试用例
    阅读build to win的个人感想
    结对编码(柳祎、张许君)
    Review(patener)
    Review [myself]
    Impressions
    Array
  • 原文地址:https://www.cnblogs.com/jimGraymane/p/11578810.html
Copyright © 2011-2022 走看看