zoukankan      html  css  js  c++  java
  • 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
        
            
        
  • 相关阅读:
    文件预览
    Intellij IDEA 配置热部署
    Spring AOP
    Spring配置Bean
    Zookeeper浅谈
    Select 可编辑下拉框
    String常见问题
    Character类--字符操作
    Android Environment FAQ (Frequently Asked Question)
    Unity Texture 2D Compress
  • 原文地址:https://www.cnblogs.com/PythonFCG/p/8439429.html
Copyright © 2011-2022 走看看