QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 6487|回复: 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者会有什么区别吗?如果一样,那生成器岂不是没用了?(所以·····)   Z  N+ O' p9 m  w
    ' ^; F+ P" H- G* s
    def createGenerator() :
    $ s# E5 g# M& J$ a- m/ P% i5 ?# r    mylist = range(10)
    1 B! d8 }) Q' P
    5 n4 S# _: h4 b4 }5 A0 v  x4 j! Z  ]    for i in mylist : 6 {9 W0 a: B, w$ V; G* W2 L7 V& Q
            yield i*i   S  F, a# v, w& r3 h3 ?! p6 {: `

    5 y; @7 p" [7 X4 n$ @, G4 l, Y# y1 Smygenerator = createGenerator() # create a generator
    + Q: K- p  k3 kprint mygenerator   m5 U1 s- T  y2 N6 I1 ]% c6 [+ {
    + H. A" g: n1 n! I8 K+ I: t
    def createIterator() :   G/ ]* L: B& r$ Y
        mylist = range(10) " [+ w. e- T$ @/ [, [: Q4 Q. o

    . t) s6 i8 d7 y! E! l2 T    return iter([i * i for i in mylist])
    + V6 x. i9 P5 }* }6 x/ W  D# T# B8 K* A4 J
    myiterator = createIterator() ; [7 j: y( B- p/ O7 Z0 X9 i! _
    print myiterator
    & O  q1 r. L1 N6 E$ a
    8 S8 \3 y' [" A& E0 N$ X
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信

    14

    主题

    10

    听众

    43

    积分

    升级  40%

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

    [LV.3]偶尔看看II

    自我介绍
    . q2 Q6 p  j/ i  [  R
    0 W5 I5 E6 p# f  Z: F( D% H

    ( D0 b! D. }9 K7 T7 d/ U2 c7 _, ]( u, E, t" p
    Cat_He 2015-04-07 20:38:08
      j" R; c: Z+ w: u% q  k3 j1 N6 n" y6 V
    这样理解?=>生成器是一种懒惰的迭代器
    0 q! J  o' A0 Y- C2 j: A$ ~( g' R% c* _; c1 T. V
    事实上,在Python3.x中许多原来在Python2.x中返回迭代器的地方都换成了返回生成器,更加优雅,安全,好用* P( [' p# w' L) ~

    ( l9 X/ c$ x; A' i7 U- c: q! L+ r& X
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-4-18 03:14 , Processed in 0.454462 second(s), 60 queries .

    回顶部