zoukankan      html  css  js  c++  java
  • 净心诀---python3生成器&迭代器

    迭代器的作用----减少程序运行的内存开销

    迭代器特点:

    1、一个一个的取值,而不是一次性把所有数据创建出来,迭代器中的数据不取不创建
    2、只能按照顺序取,不能跳过也不能回头
    3、一个迭代器中的数据只能从头取到尾一次

    生成器函数没有return,利用yield返回,换句话说,有yield的函数被叫做生成器函数

    生成器的本质是一个迭代器(生成器函数返回的就是一个迭代器)

    一个简单的生成器

    1 # 这是一个简单的生成器
    2 def SimpleTest():
    3     print("this is first")
    4     yield 1
    5     print("test is second")
    6     yield 2

    我们可以利用生迭代器自带函数__next__()来一个一个取值

    1 ret = SimpleTest()
    2 print(ret.__next__())

    思考:下面的代码结果是什么

     1 def SimpleTest():
     2     print("this is first")
     3     yield 1
     4     print("test is second")
     5     yield 2
     6 
     7 gen = SimpleTest()
     8 
     9 print(list(gen))
    10 print('='*20)
    11 for i in gen:
    12     print(i)

    利用=分开输出结果

    结合迭代器的特点,我们可以大致推断出是怎么样的一种结果

    结果:

     同一个迭代器一次只能取一回,所以上述for循环打印时,生成器中已经没有值可取。

    思考:下面的代码输出结果应该为多少?

     1 def func():
     2     for i in range(5):
     3         yield i
     4 
     5 g1 = g2 =func()
     6 for i in g1:
     7     print(i)
     8 for i in g2:
     9     print(i)
    10 
    11 print('='*40)
    12 
    13 g3 = func()
    14 g4 = func()
    15 for i in g3:
    16     print(i)
    17 for i in g4:
    18     print(i)
  • 相关阅读:
    pxe基于虚拟机的自启动
    time & datetime
    python文件读写操作
    lambda与常用内置函数
    python基础
    python day2:python 初识(二)
    mysql select
    python day1:初识Python(一)
    linux命令总结
    lvs/dr配置
  • 原文地址:https://www.cnblogs.com/zakker/p/12054623.html
Copyright © 2011-2022 走看看