zoukankan      html  css  js  c++  java
  • python学习---生成器

     1 #!/usr/bin/env python3
     2 # -*- coding: utf-8 -*-
     3 
     4 #01. 什么是生成器?
     5 #==> 在Python中,一边循环一边计算的机制,称为生成器:generator
     6 '''
     7 在python中,使用了yield的函数被称为生成器(generator)
     8 跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解
     9 生成器就是一个迭代器。
    10 在调用生成器运行的过程中,每次遇到yield时函数会暂停并保存当前所有的运行信息,返回
    11 yield的值。并在下一次执行next()方法时从当前位置继续运行。
    12 '''
    13 #02. 如何创建一个生成器(generator)?
    14 # 要创建一个generator,第一种方法只要把一个列表生成式的[]改成
    15 # (),就创建一个generator。
    16 L = [x * x for x in range(0,10)] #列表生成式
    17 print(L) #[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
    18 s = (x * x for x in range(10))  #生成器
    19 print(s) #<generator object <genexpr> at 0x0000000002126888>
    20 for x in s:  #用for循环输出生成器所有元素
    21     print(x,end="   ") #0 1 4 9 16 25 36 49 64 81 
    22 print("")
    23 
    24 s1 = (x * x for x in range(10))
    25 print(list(s1)) #将生成器转换成列表
    26 
    27 def fib(max):
    28     n, a, b = 0, 0, 1
    29     while n < max:
    30         yield b 
    31         a, b = b, a + b 
    32         n = n + 1
    33     return 'done'
    34 
    35 f = fib(10)
    36 print('fib(10):', f)
    37 for x in f:
    38     print(x,end=" ")
    39 print("")
    40     
    41 #call generator manually:
    42 g = fib(5)
    43 while 1:
    44     try:
    45         x = next(g)
    46         print('g:',x)
    47     except StopIteration as e:
    48         print('Generator return value:', e.value)
    49         break
    50 
    51 def triangles():
    52     T=[1]
    53     while True:
    54         yield T
    55         T=[(T+[0])[i]+([0]+T)[i] for i in range(len(T+[0]))]
    56 # [1, 2, 1]: [1, 1, 0] + [0, 1, 1]
    57 # [1, 3, 3, 1]: [1, 2, 1, 0] + [0, 1, 2, 1]
    58 
    59 n = 0
    60 for t in triangles():
    61     print(t)
    62     n = n + 1
    63     if n == 10:
    64         break
  • 相关阅读:
    《人月神话》读后感-何保委
    软件工程2017第二次作业随笔-何保委
    软件工程2017第一次作业随笔
    实验吧 REVERSE
    浙大ctf REVERSE
    eclipse安装
    表单
    【南京邮电】maze 迷宫解法
    看雪.TSRC 2017CTF秋季赛第三题
    使用Z3破解简单的XOR加密
  • 原文地址:https://www.cnblogs.com/hayden1106/p/7656034.html
Copyright © 2011-2022 走看看