码迷,mamicode.com
首页 > 编程语言 > 详细

python中迭代器和生成器的区别

时间:2016-07-16 00:04:29      阅读:292      评论:0      收藏:0      [点我收藏+]

标签:

 1 #!/usr/bin/python
 2 def power(values):
 3     for value in values:
 4         print "powing %s" % value
 5         yield value
 6 def add(values):
 7     for value in values:
 8         if value % 2 == 0:
 9             yield value + 3
10         else:
11             yield value + 2
12 elements = [1, 4, 7, 9, 12, 19]
13 add(power(elements))
14 for i in add(power(elements)):
15         print(i)

首先来看上面一段代码运行结果:

powing 1
3
powing 4
7
powing 7
9
powing 9
11
powing 12
15
powing 19
21
power这时已经不再是一个函数了,它是一个生成器,注意power在调用过程中并没有执行print,但是在用for进行遍历时它执行了print,所以你首先要清楚这是生成器和函数的区别!!很多教程连最基本的函数和生成器的区别都没有讲到!!接下来才说生成器和迭代器的区别:

1、语法方面来讲:

生成器是用函数中yield语句来创建的。迭代器的创建首先跟函数无关,可以用iter([1,2])来创建。

2、使用方面来讲:

由于生成器是使用函数的方式创建的,所以生成器里面的所有过程都会被执行,但请注意生成器里面的过程只有在被next()调用或者for循环调用时,里面的过程才会被执行,如同上面的例子只是单纯调用add这个对象时,add里面的过程没有被执行哦

迭代器同样可以被for和next调用但是由于没有其他过程,在被调用时只会返回值,不会有其他动作

python中迭代器和生成器的区别

标签:

原文地址:http://www.cnblogs.com/linkstree/p/5674670.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!