Python3 生成器

1、协同程序

协同程序就是指一个函数可以暂时挂起,并在需要的时候回到程序离开的地方继续执行

2、怎样将一个函数变为生成器

一般函数结束于return语句、异常或者函数语句全部执行完毕,结束时数据全部丢失,再次使用函数得从头再来

可以用yield语句 取代return语句,从而函数改造成生成器,是再次需要该函数的时候可以回到离开的地方继续执行

def get_primes(number):
    while True:
        if is_prime(number):
            yield number
        number += 1

这是一个素数的生成器 

while True:的作用是使函数不会执行到最后

例子:

用生成器实现reversed()功能

def myRev(data):
    # 这里用 range 生成 data 的倒序索引
    # 注意,range 的结束位置是不包含的
    for index in range(len(data)-1, -1, -1):
        yield data[index]
def MyRev(seq):
    index=-1
    print("到这")
    while True:
        try:
            yield seq[index]
            print("循环内")
            index-=1
        except IndexError:
            return StopIteration

就算2000000以内的素数之和

mport math
def get_prime(number):
    while True:
        if is_prime(number):
            yield number
        number+=1


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

for i in  get_prime(1):
    if i<2000000:
        print(i)
        totle+=i
    else:
        break
    
        
    

 

转载于:https://www.cnblogs.com/PythonFCG/p/8439429.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值