QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5494|回复: 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者会有什么区别吗?如果一样,那生成器岂不是没用了?(所以·····) 5 B- g. n% W9 ?

    ( J$ V, @# l5 |* W9 Wdef createGenerator() :
    9 P+ Q4 O2 x6 V$ T: V7 q    mylist = range(10)
    ; o/ Y2 Z/ R9 [
    * D; n: B% V8 Y/ i( Z    for i in mylist :
    4 p0 m. S! c& V5 `% u6 j        yield i*i
    * Z" J* @0 {+ t$ |" r
    / V1 z/ S7 f. b( k# q3 c; e8 _mygenerator = createGenerator() # create a generator " a8 @: D7 u, c% H9 d5 e' v
    print mygenerator
    ( r- q/ m  N5 ~; U: Q" c' u2 s6 F9 m+ Q* A& R$ E2 Z
    def createIterator() :
    2 p* r8 E$ A% D- k8 m    mylist = range(10)
    6 A. x4 k$ O: n" {7 m: `( S
    ) n" ~* W1 }: x! g1 _% t( T% G2 n. q    return iter([i * i for i in mylist])
    5 A2 E, {: _5 L' z$ Y
    : t, T6 q+ K' X. c' umyiterator = createIterator()
    % m9 C: m6 e& {print myiterator
    ! z! B6 Q, L. W2 o8 v$ U  I
    ! ?! U6 ^9 R. \; {8 ^1 r' H
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信

    14

    主题

    10

    听众

    43

    积分

    升级  40%

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

    [LV.3]偶尔看看II

    自我介绍

    ; y% W$ O1 I2 L7 w9 G. a
    * ]' h& k0 ]/ l; L4 u( m1 l# @: c7 @0 ~5 W$ [
    ! J. C$ V) A2 g- |; S+ @3 O( |
    Cat_He 2015-04-07 20:38:08 - N! t8 ^( I0 J$ A# c) z
    + F" u  Y+ K* ~9 q8 m% B
    这样理解?=>生成器是一种懒惰的迭代器 5 U5 T: }3 ]3 [8 k  V

    5 X- H) U4 Y6 Y7 z" f1 g事实上,在Python3.x中许多原来在Python2.x中返回迭代器的地方都换成了返回生成器,更加优雅,安全,好用# h' \7 U/ b1 o: U/ ]+ g$ J% S

    ; B( g5 K  J# A; Z
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2025-9-16 10:18 , Processed in 0.405582 second(s), 62 queries .

    回顶部