美文网首页
Python3:条件、循环、迭代、生成

Python3:条件、循环、迭代、生成

作者: ACphart | 来源:发表于2018-07-15 16:07 被阅读33次

    条件语句

    if 语句

    if ...... :
        pass
    

    if else语句

    if ......:
        pass
    else:
        pass
    

    if嵌套

    if ......:
        pass
    elif ......:
        pass
    elif ......:
        pass
    

    循环语句

    while循环

    while ......:
        pass
    

    for循环

    for ......:
        pass
    

    循环控制语句

    • break :终止循环并转移到循环之后的语句
    • continue:直接进入下一次迭代
    • pass:占位代码,用于架构,细节后期实现

    迭代器和生成器

    迭代器(Iterator)用以遍历集合的所有元素

    主要实现方法是iter()next(),字符串、列表、元组可用于创建迭代器

    import sys
    mylist = [1,2,3,4]
    it = iter(mylist)
    while True:
        try:
            print(next(it))
        except StopIteration:
            sys.exit()
    

    上述代码其实等效于一个for循环迭代

    mylist = [1,2,3,4]
    for it in mylist:
        print(it)
    

    生成器(generator)

    • 将正常函数的return语句换成yield语句即构建了一个生成器
    • 如果函数包含至少一个yield语句(它可能包含其它yieldreturn语句),那么它将成为一个生成函数。
    • 区别在于,return语句完全终止函数,但yield语句会暂停函数保存其所有状态,并在以后的连续调用中继续执行(类似于线程挂起)

    生成器函数与正常函数的差异

    • 生成器函数包含一个或多个yield语句
    • 当被调用时,它返回一个对象(迭代器),但不会立即开始执行
    • iter()next()之类的方法将自动实现,所以可以使用next()迭代项目
    • 局部变量及其状态在连续调用之间被记住
    • 最后,当函数终止时,StopIteration会在进一步调用时自动引发
    def my_gen():
        n=1
        yield n
        n+=1
        yield n
        n+=1
        yield n
    
    # >>>a=my_gen()
    # >>>next(a)
    # 1
    # >>>next(a)
    # 2
    # >>>next(a)
    # 3
    # >>>next(a)
    # Traceback .......
    # ...
    # StopIteration
    

    具有循环的生成器

    def all_even():
        n=0
        while True:
            yield n
            n+=2
    
    #理论上可以生成所有的偶数
    

    相关文章

      网友评论

          本文标题:Python3:条件、循环、迭代、生成

          本文链接:https://www.haomeiwen.com/subject/yryppftx.html