QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 6522|回复: 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者会有什么区别吗?如果一样,那生成器岂不是没用了?(所以·····) ; o7 L; G' I: X3 B- [! P5 N

    * S" u/ }6 a) P: k+ V: T5 }; Bdef createGenerator() : 5 E) J: i( `% d8 E' X3 ~# Y' R
        mylist = range(10)   d! h2 o0 B$ l8 D$ E( a3 W3 y7 m6 n, j

    / j0 B" ^% o7 `. A( N0 ]4 P    for i in mylist : , k. c/ y) L' ]% k7 |
            yield i*i
    ; m! E1 M3 v, g, |8 x9 e! i5 I. ~1 }. {/ N6 [4 R
    mygenerator = createGenerator() # create a generator , x% M* E9 J9 g# ?
    print mygenerator
    5 ~/ K6 n3 S8 d+ ?# Z* {: B1 r- b# a1 {" k6 z7 I, K' e
    def createIterator() : 3 I$ {+ v2 D# L9 }" m; V
        mylist = range(10)
    0 Y: o% `) c+ n; |# ~+ }$ y4 [
    # {: c2 W- R5 t    return iter([i * i for i in mylist]) 1 `* u' r9 s) T2 D# z
    2 Q  E! G. P; T
    myiterator = createIterator() + i+ W* F& f  j" o# g
    print myiterator ; t& _/ h/ M6 b& f3 t3 J* u

    ( a2 e. D4 N" V" n. j" V
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信

    14

    主题

    10

    听众

    43

    积分

    升级  40%

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

    [LV.3]偶尔看看II

    自我介绍

    . ~( z% [0 a+ a3 I" M( y2 Q0 n' u+ x) b' ~2 R' z  o- K: f2 u. Y
    # M1 q. ~! x9 b

    5 w! B* T1 _# [# zCat_He 2015-04-07 20:38:08 ; D" \$ |7 C; v7 `9 u5 w. R3 s

    4 d& z4 x1 o  w8 y1 Q这样理解?=>生成器是一种懒惰的迭代器
    0 W8 b! p7 F0 H9 o/ X4 \: g  Q9 @' }( B0 h2 H/ h. ]4 |
    事实上,在Python3.x中许多原来在Python2.x中返回迭代器的地方都换成了返回生成器,更加优雅,安全,好用
    - q5 E  R! a) i
    9 l6 m$ F+ @$ c0 r* z( ?$ s3 T& ~
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-6-4 04:35 , Processed in 0.552704 second(s), 60 queries .

    回顶部