zoukankan      html  css  js  c++  java
  • 生成器

    #一边循环,一边计算的机制,称为生成器generator。generator保存的是算法,可推算出列表中的某个元素值,可节省大量的存储空间
    #生成器:只有在调用的时候才会生成相应的数据。只记录当前位置。
    #只有一个__next__()方法
    #要把函数变成生成器,只需把print命令改为:yield命令即可
    #如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator。
    #函数是顺序执行,遇到return语句或者最后一行函数语句就返回。而变成generator的函数,在每次调用__next__()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行。
    #生成器不能像普通的列表一样,通过下标或者切片的方式去取。生成器只能通过循环或者__next__()方法去取。

    #创建生成器方法一:

    generator1 = (i*2 for i in range(100)) #与列表很相似,只是把[]改成为()。如果在Pyton命令行执行,将返回内存地址
    for i in generator1:
    print(i)

    ###或者将for循环改用以下命令一个个的输出:
    print(generator1.__next__()) #读取第一个元素值
    print(generator1.__next__()) #读取第二个元素值
    print(generator1.__next__()) #只能往后读取,不能往前
    print(generator1.__next__()) #读取到最后一个值时,抛出StopIteration的错误。


    ###################################
    #创建生成器方法二:
    def odd():
    print("step 1")
    yield 1 #执行过程中,遇到yield执行后就中断。后面的数值为可选的返回值
    print("step 2")
    yield 3
    print("step 3")
    yield 5

    o = odd()
    o.__next__()
    o.__next__()
    o.__next__()
  • 相关阅读:
    模板网站
    用servlet和jsp做探索数据库
    Hibernate和jsp做数据库单表的增删改查
    拦截器
    校验器-对提交的用户名和密码进行过滤
    使用my exclipse对数据库进行操作(4)
    如何正确关闭游戏服务器
    Ehcache 入门详解
    自动重置 Language Level默认为5与 Java Complier默认为1.5
    洪均生谈初学者练习(怎样认识太级拳和怎样进行练习)
  • 原文地址:https://www.cnblogs.com/hy007x/p/7727434.html
Copyright © 2011-2022 走看看