QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5299|回复: 1
打印 上一主题 下一主题

关于Python的生成器和迭代器

[复制链接]
字体大小: 正常 放大

12

主题

9

听众

38

积分

升级  34.74%

  • TA的每日心情
    慵懒
    2015-5-5 09:35
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    自我介绍
    sdc
    跳转到指定楼层
    1#
    发表于 2015-4-10 14:10 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    Python的生成器语法,会返回一个生成器对象,而用iter()函数,也能返回一个带有next()方法的可迭代对象,这样的话··按照我下面的写法,2者会有什么区别吗?如果一样,那生成器岂不是没用了?(所以·····) ) p: [1 |* C5 x# Z8 H! e$ m+ V' s
    ' Y* z! z- J# J9 q
    def createGenerator() :
    # ]2 i7 v: P* y    mylist = range(10) 4 n$ |& @  q& m7 Q1 T. c

    2 P1 l, j* V: Q. l7 k; U    for i in mylist :
    & Z3 A9 q! w. l8 O) `  U+ m        yield i*i 0 e, N+ H9 J7 c3 v5 C6 d0 p& G

    & U- c9 e3 I0 L! y4 n& M0 L9 L# dmygenerator = createGenerator() # create a generator
    & U* g1 w* ^/ r* L8 x$ K  ?print mygenerator ( ?% `7 ?4 u/ d; x
    + o/ N* r1 n5 c. A0 A" n5 t8 O
    def createIterator() :
    7 u1 I. T0 {: n6 a2 z    mylist = range(10)
    7 J! g  U/ b$ r2 v7 P5 X" l' ^/ _
        return iter([i * i for i in mylist]) 3 C. o8 `6 S+ E  ?: ~
    8 q& O' H$ o3 K) |
    myiterator = createIterator() " g; q5 v( U( l- d- t
    print myiterator   U, O' k7 X+ A% H! A) E
    / e: J, F8 F( d( a/ t3 v
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信

    14

    主题

    10

    听众

    43

    积分

    升级  40%

  • TA的每日心情
    慵懒
    2015-5-5 09:46
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    自我介绍
    " j" s, g: W. I% l) S
    & B5 X* X! N' G7 ?: H" k2 `0 B. ?

    & V7 ~- V! u9 o7 f5 U. v. B% I+ Y3 t9 J9 k6 w" P9 W
    Cat_He 2015-04-07 20:38:08 - P( |4 p+ K" H
    6 ?# t3 m  \6 i# I* M7 \
    这样理解?=>生成器是一种懒惰的迭代器 ( E  o% L) {, X0 W+ a

    # S$ ~$ D, W4 w- B' B$ I事实上,在Python3.x中许多原来在Python2.x中返回迭代器的地方都换成了返回生成器,更加优雅,安全,好用; O2 S; J& Z6 ]# p+ g. O8 N
    0 c1 p& L, D5 P2 Q
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2025-8-19 09:41 , Processed in 0.514210 second(s), 59 queries .

    回顶部