码迷,mamicode.com
首页 > 编程语言 > 详细

python学习---生成器

时间:2017-10-12 14:58:58      阅读:285      评论:0      收藏:0      [点我收藏+]

标签:value   for循环   []   break   循环输出   遇到   generator   end   usr   

 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(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

 

python学习---生成器

标签:value   for循环   []   break   循环输出   遇到   generator   end   usr   

原文地址:http://www.cnblogs.com/hayden1106/p/7656034.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!