标签: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
标签:value for循环 [] break 循环输出 遇到 generator end usr
原文地址:http://www.cnblogs.com/hayden1106/p/7656034.html