QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 6482|回复: 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者会有什么区别吗?如果一样,那生成器岂不是没用了?(所以·····) 2 e0 `5 E4 \! k) Y2 U
    : f6 D/ C% S* E8 E9 _
    def createGenerator() : " @) K# x$ t* G3 R% [
        mylist = range(10) " p/ f; d" b; _# O+ p6 }

    ) c& c* R$ U9 r    for i in mylist : $ U: F5 B- e! g8 C4 w, V8 B/ m
            yield i*i
    3 s8 u$ F9 Z$ E, n+ m! J4 [) O5 D# ^3 X; |) V
    mygenerator = createGenerator() # create a generator 4 K5 T% E$ i, l6 ~- o/ v7 _- F
    print mygenerator 9 V3 Q2 d% c3 ~" ~
    7 C( l$ p$ D2 V& i
    def createIterator() : 1 }8 O' i* w" Q% Y6 D; c
        mylist = range(10)
    ! x- |6 V5 H* T
    . T- y  J; p+ f) r. x+ T' q/ t    return iter([i * i for i in mylist])
    % a' [2 y0 _! f5 K/ d+ n
    2 ?- \- M- S% i5 O3 ?myiterator = createIterator()
    9 Q1 X; o1 p. T6 H; C0 oprint myiterator * b5 G7 }  z9 L, \8 n
    7 B" _7 X% G: |4 v. U" c
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信

    14

    主题

    10

    听众

    43

    积分

    升级  40%

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

    [LV.3]偶尔看看II

    自我介绍

    2 x: E8 O: N) R# c" H5 y4 F9 U3 ^+ Q9 |
    2 A' u* Z& _0 s" G5 S3 p* i
    / u, A- h0 I5 f, w: B
    Cat_He 2015-04-07 20:38:08 ! _2 {5 s- E5 B* E, x# u: [1 u

    0 l. G+ s+ M/ A& I7 q. e( v/ _7 b这样理解?=>生成器是一种懒惰的迭代器
    0 ?. F& F7 t: r, B" g( M  g$ A  X7 _$ _/ n  P# ?: Z
    事实上,在Python3.x中许多原来在Python2.x中返回迭代器的地方都换成了返回生成器,更加优雅,安全,好用
    ( ]% D( `4 ~5 C0 Y' E$ e2 ~- V( y6 e% l0 T3 l
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-4-14 15:55 , Processed in 0.443114 second(s), 60 queries .

    回顶部