QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 6553|回复: 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者会有什么区别吗?如果一样,那生成器岂不是没用了?(所以·····)
    # x" A- D3 r# z( j$ Z6 q* Y% C' y) p7 j: B
    def createGenerator() : , j5 z8 {4 u9 {
        mylist = range(10) " M, ~8 U  \. J
    % O4 l# J/ h7 N0 u4 q
        for i in mylist :
    9 S6 ^' r/ i7 G  l0 {9 g        yield i*i # E7 {( g% {4 m5 c- I
    ! K  a  F4 M* [" K9 U! C% _. q
    mygenerator = createGenerator() # create a generator 1 E4 B- h; `7 M: X
    print mygenerator " g4 {$ Q$ _) ?; _# f

    , h4 Y/ J& x* b/ u: B" F1 qdef createIterator() : 2 N1 ^2 f/ T, l8 ^" U$ |4 b
        mylist = range(10) + k3 P: ^: d8 H: j
    / T5 r3 e6 O4 a# T2 @
        return iter([i * i for i in mylist])
      x+ |1 V7 O  \# c  d3 V) F0 V7 ^* F& Y  ]
    myiterator = createIterator() # t2 |% x- ]1 H/ e/ z4 e. B
    print myiterator
    - J1 ~# F1 F! |; ?+ ^4 ]/ |6 [' z' v7 x$ A4 `
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信

    14

    主题

    10

    听众

    43

    积分

    升级  40%

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

    [LV.3]偶尔看看II

    自我介绍
    7 i/ E( H4 [# A/ d( T1 S: B

    ; {1 X) B: L' J( ~/ |, k* O# d* I; L. Y
    1 O$ r# u+ U6 r$ K
    Cat_He 2015-04-07 20:38:08 ! a$ P/ ]$ f' y/ g" R
    . x- `! k/ d; L( v) Q, f
    这样理解?=>生成器是一种懒惰的迭代器
    : Y4 n3 y( L; j6 P/ u* [* p, h/ C: G1 L: N
    事实上,在Python3.x中许多原来在Python2.x中返回迭代器的地方都换成了返回生成器,更加优雅,安全,好用+ s  {3 O% V5 [& Z9 V/ ]) ^9 B

    9 n" w3 q' }1 P4 }( C2 f$ a
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-7-19 10:21 , Processed in 0.548666 second(s), 60 queries .

    回顶部