第049讲: 乱入:生成器 | 学习记录(小甲鱼零基础入门学习Python)

(标答出处: 鱼C论坛)
《零基础入门学习Python》

本节知识点:

(1)generator 是用来产生一系列值的
(2)yield 则像是 generator 函数的返回结果
(3)yield 唯一所做的另一件事就是保存一个 generator 函数的状态
(4)generator 就是一个特殊类型的迭代器(iterator)
(5)和迭代器相似,我们可以通过使用 next() 来从 generator 中获取下一个值
(6)通过隐式地调用 next() 来忽略一些值

测试题:
在这里插入图片描述
答:通常函数从第一行代码开始执行,到函数的结束,或者 return ,或者出现异常 结束。
在这里插入图片描述
在这里插入图片描述
答:将 return 语句 改为 yield 语句 。
在这里插入图片描述
答:生成器(以及 yield 语句)最初的引入是为了让程序员可以更简单的编写用来产生值的序列的代码。 以前,要实现类似随机数生成器的东西,需要实现一个类或者一个模块,在生成数据的同时保持对每次调用之间状态的跟踪。而且,如果函数不是一次性返回全部的值,那么我们就不需要用列表来存数据,这就意味着消耗的内存将大大的减少。
在这里插入图片描述
答:while 循环是用来确保生成器函数永远也不会执行到函数末尾的。

动动手:
在这里插入图片描述

def myRev (seq) :
    for index in range ( len(seq)-1 , -1 , -1 ) :
        yield seq[index]
    
for i in myRev("xmy") :
    print (i,end = '')

运行结果:
在这里插入图片描述
在这里插入图片描述

import math

def isprime (num) :
    if num > 1 :
        if num == 2 :
            return True
        if num %2 == 0:
            return False
        for currect in range (3,int(math.sqrt(num)+1),2):
            if num % currect == 0:
                return False
        return True

def getprime (num) :
    while True:
        if isprime(num) :
            yield num
        num += 1

def slove () :
    total = 2
    for nextprime in getprime(3) :
        if nextprime < 2000000 :
            total += nextprime
        else :
            print (total)
            return

slove()

运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值