概述
# 列表生成式:一次性生成所有数据,然后保存在内存中,适合小量数据 # 将1-100所有偶数的平方返回,下边两种方法效果一致,方法1便是生成式 # 方法1 li = [x*x for x in xrange(1,101) if x%2 == 0] print(li) # 方法2 def funA(): a = [] for i in xrange(1,101): if i%2 == 0: a.append(i*i) return a print(funA()) # 列表生成器:返回一个可迭代对象,即generator对象,必须通过遍历才能一一将值取出 # 1.最简单的办法,把原来生成式的[]换成()即可 lt2 = (y*y for y in xrange(1,101) if y%2 ==0) print(lt2) print(type(lt2)) # 2.函数中定义列表生成器(generator) # yield 的作用就是把一个函数变成一个generator,带有 yield 的函数 # 不再是一个普通函数,python解释器会将其视为一个generator def funB(n): sum = 0 ii = 0 while(ii < n): sum = sum + ii ii += 1 yield(sum) print(funB(10)) for iii in funB(10): print iii # 生成器不会一次列出所有的数据,更加节省内存使用率 # 可迭代对象(iterable):可以通过for循环调用出来的,就是可迭代对象,如:列表、元组、字典、生成式、 # 迭代器(iterator):任何具有__next__()方法的对象都是迭代器,对迭代器调用next()方法可以获取下一个值
# 小练习:打印九九乘法表运行结果:def funC(): for i in xrange(1,10): for j in xrange(1,i+1): print('%s * %s = %s' %(j,i,i*j)), print funC()
1 * 1 = 1
1 * 2 = 2 2 * 2 = 4
1 * 3 = 3 2 * 3 = 6 3 * 3 = 9
1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16
1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25
1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36
1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49
1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64
1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81
最后
以上就是积极学姐为你收集整理的Python生成式和生成器的全部内容,希望文章能够帮你解决Python生成式和生成器所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复