QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 6475|回复: 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者会有什么区别吗?如果一样,那生成器岂不是没用了?(所以·····) - E4 u1 \' U/ |) H- R
    3 e/ x: ~' P7 J) q5 Z; P
    def createGenerator() : 4 B" a3 N* Q3 u! ?1 H, q. |* A
        mylist = range(10)
    0 M. O* z  ^% C+ Q8 O. S# y
    / B# d! C8 C  T( p    for i in mylist : 3 C' P' ^3 X) I% B% a- m
            yield i*i
    * v' y" Z2 l; C7 h& q# E2 ^! P. r2 X% p0 Y/ Q% F( _6 u
    mygenerator = createGenerator() # create a generator 5 t: O) o- |, j$ `5 o6 P
    print mygenerator % I$ b. h) s# ~  h# ~/ D% M7 o
    * D5 L4 f' d- z
    def createIterator() :
    ; I8 @; f  z* q* Q) m    mylist = range(10)
    ! C) V, p3 i" r5 t3 y$ k, o' g8 D# Q( H' B1 Z
        return iter([i * i for i in mylist])
    + G: _3 A% C0 ]6 A, ?$ ?' `! [) L: s+ V+ b
    myiterator = createIterator() 9 ^8 R. e) f$ m# F  p6 I# k
    print myiterator / A! H; [+ B, _0 Z2 e/ c  W

    6 v5 h3 _6 o" j! l; {
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信

    14

    主题

    10

    听众

    43

    积分

    升级  40%

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

    [LV.3]偶尔看看II

    自我介绍

    3 l5 E  y5 ~+ G, T
    $ M! T5 m5 [6 @3 l$ d. w7 q1 s/ x$ b& X+ @+ j* p, Q9 P/ y
    , s5 T1 u" k4 A+ V
    Cat_He 2015-04-07 20:38:08 ) y' X2 p4 A" @: `9 f" }0 b: D) w

    & W/ ]& R1 T8 }8 F9 I# b这样理解?=>生成器是一种懒惰的迭代器
    / P) k& y$ Z! ?* L# Z: I8 h) T$ E: R# J" C7 v2 n" Y5 H# D* b
    事实上,在Python3.x中许多原来在Python2.x中返回迭代器的地方都换成了返回生成器,更加优雅,安全,好用% D$ c, F  t$ J; F/ E( A  V; B

    9 w' _  N6 k" q9 O& P' W/ y5 A
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-4-10 08:55 , Processed in 0.476361 second(s), 60 queries .

    回顶部