我是靠谱客的博主 积极学姐,最近开发中收集的这篇文章主要介绍Python生成式和生成器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

# 列表生成式:一次性生成所有数据,然后保存在内存中,适合小量数据
# 将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生成式和生成器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部