Python高级特性--生成器
发布时间:2020-12-20 12:46:39 所属栏目:Python 来源:网络整理
导读:通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。 #要创建一个genera
#要创建一个generator,第一种只要把一个列表生成式的[]改成(),就创建了一个generator: L = [x*x for x in range(1,11)] print(L) l = (x*x for x in range(1,11)) print(l) #[1,4,9,16,25,36,49,64,81,100] #<generator object <genexpr> at 0x00000133B2F035E8> #L是一个list,而g是一个generator 斐波拉契数列 def fib(max): n,a,b = 0,1 while n < max: print(b) a,b = b,a + b n = n + 1 return 'done' #要把fib函数变成generator,只需要把print(b)改为yield b就可以 def fib(max): n,1 while n < max: yield b #generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行。 a,a + b n = n + 1 return 'done' (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |