Python之yield生成器

简介:

1、对比range和xrange的区别:

1
2
3
4
>>> print range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> print xrange(10)
xrange(10)

range()和xrange()的区别在于,range会在内存中创建所有指定的数字,而xrange不会立即创建,只有在迭代循环时,才去创建每个数组。

这就类似于yield和return的区别



2、yield和return的区别

当定义一个函数时,如果函数的代码出现了return,则函数立马终止,并返回结果。就算函数下面有多个return,也只会返回第一个return值。

示例:

1
2
3
4
5
6
7
def func():
     return  1
     return  1
     return
 
print func()
1


yield的原理:

1
2
3
func1():
     I func1():
     I
1
2
3
4
5
1
2
3
 
当第一次循环是,获取值1,此时yield不会退出函数,会记住yield 1这个位置,继续执行函数,下一次就到yield2,在下一次到yield3

return和yield的区别在于,return返回结果后会跳出函数,不再执行函授后面的代码,而yield不会跳出函数,并且会记住函数代码执行位置,下次继续执行。


xrange()的原理:

1
2
3
4
5
6
7
8
9
10
def mrange(arg):
     seed = 0
     while  True:
         seed =seed + 1
         if  seed > arg:
             return
         else :
             yield seed
for  in  mrange(10):
     print i

每次执行一次循环,会生成一个值。知道seed>arg为止。











本文转自 曾哥最爱 51CTO博客,原文链接:http://blog.51cto.com/zengestudy/1827003,如需转载请自行联系原作者
目录
相关文章
|
30天前
|
算法 大数据 Python
Python生成器:优雅而高效的迭代器
Python生成器:优雅而高效的迭代器
|
1月前
|
Python
请解释 Python 中的生成器的工作原理。
【2月更文挑战第20天】【2月更文挑战第58篇】请解释 Python 中的生成器的工作原理。
|
2月前
|
索引 Python 容器
解释Python中的迭代器和生成器的优势和劣势。
解释Python中的迭代器和生成器的优势和劣势。
32 2
|
1月前
|
Python
Python如何使用生成器生成更加优雅和高效的代码
Python如何使用生成器生成更加优雅和高效的代码
23 0
|
3天前
|
大数据 数据处理 开发者
深入理解Python中的迭代器和生成器
Python中的迭代器和生成器是实现高效循环和处理大型数据集的重要工具。本文将深入探讨迭代器和生成器的概念、原理以及在实际开发中的应用场景,帮助读者更好地理解和利用这些强大的工具。
|
16天前
|
人工智能 机器人 测试技术
【Python】Python迭代器与生成器的区别(详细讲解)
【Python】Python迭代器与生成器的区别(详细讲解)
【Python】Python迭代器与生成器的区别(详细讲解)
|
1月前
|
Python
请解释Python中的迭代器和生成器的区别?并分别举例说明。
【2月更文挑战第24天】【2月更文挑战第80篇】请解释Python中的迭代器和生成器的区别?并分别举例说明。
|
1月前
|
算法 Java Shell
Python教程第5章 | Python迭代器和生成器
Python迭代器和生成器、综合案例
25 0
|
1月前
|
Python
如何在Python中使用生成器来生成列表?
如何在Python中使用生成器来生成列表?
11 1
|
1月前
|
Python
如何在Python中定义生成器函数?
【2月更文挑战第20天】【2月更文挑战第60篇】如何在Python中定义生成器函数?

热门文章

最新文章