数学建模社区-数学中国
标题:
关于Python的生成器和迭代器
[打印本页]
作者:
爱是你我
时间:
2015-4-10 14:10
标题:
关于Python的生成器和迭代器
Python的生成器语法,会返回一个生成器对象,而用iter()函数,也能返回一个带有next()方法的可迭代对象,这样的话··按照我下面的写法,2者会有什么区别吗?如果一样,那生成器岂不是没用了?(所以·····)
; t$ x& A9 I7 y/ m
+ R. y4 b! P9 @6 M( A
def createGenerator() :
4 n9 n `* R* {, y
mylist = range(10)
2 D% @8 e$ L% ~2 x4 I* z
8 ?! f7 |& L7 u L
for i in mylist :
+ m; m+ Z; H' ]) ^6 t
yield i*i
: Z' Z6 l$ Y1 P4 S! A8 x
! h, g0 @4 q" q8 s( t
mygenerator = createGenerator() # create a generator
~' Q2 L \" [
print mygenerator
7 @1 h2 ^, h% I) C( s
" [* q6 ?1 A$ `% @" a: Y. t, Q: d, U
def createIterator() :
7 f0 ?# W- R, X
mylist = range(10)
; E$ w$ N+ V7 h- Y- w
% H+ o L; B2 d7 G) F) w6 t
return iter([i * i for i in mylist])
- d$ Z V8 `8 J6 {3 f; n* w+ S
' c4 x6 [% u4 ^. P
myiterator = createIterator()
. E9 i8 a1 M! C2 p
print myiterator
7 ]% `+ W6 W& M; Q" \
* y' G: S; }8 ^! C, i- p
作者:
美人如花
时间:
2015-4-10 14:16
$ N3 a- R1 }$ ^
9 a9 s7 [8 W2 f" p5 q% u
! z! N) z7 f4 l& |" z
$ J8 d( s% y" s! v, O
Cat_He 2015-04-07 20:38:08
. N- _$ k, _4 q0 v/ @ |7 ^
4 g9 C9 {4 a0 N# e
这样理解?=>生成器是一种懒惰的迭代器
& h$ _! D) x' ~- x
) d2 ~6 n* @0 |
事实上,在Python3.x中许多原来在Python2.x中返回迭代器的地方都换成了返回生成器,更加优雅,安全,好用
3 ?3 |8 D7 D5 f9 K) |! }1 J
0 m" i( E( j( j
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5