QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 6518|回复: 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者会有什么区别吗?如果一样,那生成器岂不是没用了?(所以·····)
    " w3 L/ X. F: G; n  w( Q- f1 F6 d. S$ A8 O& ^1 K& _; N' w3 V8 a
    def createGenerator() :
    7 I& Q/ ?7 k) ^6 _9 k: V/ w* _    mylist = range(10)
    ; Q! I" u. G% L5 [8 _
    - p' G  H0 f, Z( [- d, J! w    for i in mylist : ! k& e1 E7 Q+ [- n1 V# y* \
            yield i*i - w" J& C! ?+ h! |% v

    / g; `/ K3 [/ v2 V9 X9 p# H0 Hmygenerator = createGenerator() # create a generator
    , q: ~, Z: F3 j6 T6 X9 g5 ~1 aprint mygenerator 6 B; a0 C0 F3 \' m# L1 e, T: v

    4 s8 A0 f8 c+ U3 H4 q" d  v" `def createIterator() :
    3 v7 f8 @, A- U    mylist = range(10)   {# V' X8 f, I, b( q; x

    $ z  e* ?* ?8 J9 Q; S) @    return iter([i * i for i in mylist]) 8 p* J( r% y9 c

    * ?- b% G8 g3 ]4 v) `myiterator = createIterator()
    ( a" i1 m/ J/ iprint myiterator ( `2 s+ }4 r! o* l4 e6 h5 o
    + z+ ~; S' y: A- W& S
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信

    14

    主题

    10

    听众

    43

    积分

    升级  40%

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

    [LV.3]偶尔看看II

    自我介绍
    ! p) L7 F7 t# }2 r

    + r' E6 K* u7 o  q  ~/ z& a  q2 K* e
    2 a' g9 `6 s: L: y$ ^: d; _. ^! I7 V" t/ k+ e8 S& g, f
    Cat_He 2015-04-07 20:38:08 : U. {4 T! I' v* d
    - x+ C& r5 s5 O6 z: z
    这样理解?=>生成器是一种懒惰的迭代器
    3 e- b, }+ \1 ?( [  c9 \
    % Q3 g' `8 G  B1 i$ B/ y: C事实上,在Python3.x中许多原来在Python2.x中返回迭代器的地方都换成了返回生成器,更加优雅,安全,好用
    # Z3 N( @) Z9 N. d* s  w) s3 s4 ?$ B( g
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-6-3 03:12 , Processed in 0.408026 second(s), 62 queries .

    回顶部