QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 6520|回复: 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者会有什么区别吗?如果一样,那生成器岂不是没用了?(所以·····)
    / A, k' I( u( U% c8 y  v6 C2 H5 }6 a% ^9 x* J7 d( x
    def createGenerator() : % |: @( M: Z6 X+ C: F9 |
        mylist = range(10)
    $ s. s2 ^. n1 e- x% K" ]' O6 z4 ^! v9 v
        for i in mylist : / O; G8 G: v) p& g" D/ q9 u
            yield i*i
    2 b; ~7 Q/ l! n- w8 c0 k7 r9 n8 q4 \" n. t2 R0 t3 Y; h) ^' B+ [
    mygenerator = createGenerator() # create a generator 4 @9 r: s& M0 `/ a9 ]
    print mygenerator
    . E  [( b9 l4 x& O5 w
    $ |' {" y* _& K9 k# Edef createIterator() : 5 Q3 Z! w$ q* N7 w
        mylist = range(10)
    % K/ v4 V5 k% H: w* r" B* }8 ^8 h- k
        return iter([i * i for i in mylist]) 4 I8 f! J1 t1 v2 g1 O
    8 B3 k& X1 J; N3 e: F: {
    myiterator = createIterator()
    / {* G# R; ?& a, B& ?& A6 l: B  h  cprint myiterator
    + Y0 D3 i" r$ z7 s5 {
    ) C7 @, C4 _/ {6 o8 w9 L* t
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信

    14

    主题

    10

    听众

    43

    积分

    升级  40%

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

    [LV.3]偶尔看看II

    自我介绍

    / R. A6 u, d3 ~, n1 p( W: L, k( H  y; o4 A. T: p9 o1 M/ f) x

    ; o  M' w# \4 ]  ?5 Y
    6 ~" a  o. Y! P0 d; x# sCat_He 2015-04-07 20:38:08
    : Q0 r, \; b# ?/ f) l# `$ @& A1 _
    这样理解?=>生成器是一种懒惰的迭代器 6 G+ I6 h' P; S5 r% N$ P4 b: J7 S# L6 p* W
    3 ]" y9 }, ~( r% M+ v
    事实上,在Python3.x中许多原来在Python2.x中返回迭代器的地方都换成了返回生成器,更加优雅,安全,好用# V2 S- c- k& Y" W* s8 Z
    ( H" S, i  W9 {$ C1 o2 \8 X
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-6-3 09:15 , Processed in 0.447950 second(s), 59 queries .

    回顶部