鱼C论坛

 找回密码
 立即注册
查看: 2930|回复: 0

[迷途问路] 关于yield和generator,请大神解答

[复制链接]
发表于 2017-1-24 12:55:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#扩展阅读:解释yield和Generors
#以下标了condition 1和condition 2,均可自主实现指定功能,唯一不明的是
#为什么如果不是“number=yield number  ”,而是“yield number”,
#send就不会起到应有的作用?
def isPrime(Num):
        if Num==1:
                return False
        elif Num==2:
                return True
        else:               
                for i in range(2, Num//2+1):
                        if Num%i==0:
                                return False
        return True
                        
def getPrime(number):
        while True:
                if isPrime(number):
                      yield number                #condition 1
##                      number=yield number         #condition 2            
                number+=1

def printSuccessivePrime(iterations, base=10):
        primeGenerator=getPrime(base)  #condition 2
        primeGenerator.send(None)  #condition 2
        for power in range(iterations):
##                print(next(getPrime(base**power)))  #condition 1
                print(primeGenerator.send(base**power))  #condition 2

#注,当getPrime()处于condition 1,有以下:
>>> a=getPrime(100)
>>> a.send(None)
101
>>> a.send(1000)
103
>>> a.send(10000)
107
>>> a.send(100000)
109
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 06:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表