文档章节

零基础学python-19.9 生成器函数与生成器表达式

raylee2015
 raylee2015
发布于 2015/10/21 08:10
字数 376
阅读 3
收藏 0

这一章节主要讨论生成器函数与生成器表达式的联系与区别。

1.联系

* 两者之间都是返回生成器。下面是示例代码

>>> g=(x for x in range(5))
>>> g
<generator object <genexpr> at 0x01E673F0>
>>>


 

>>> def test():
	for x in range(5):
		yield x

		
>>> test()
<generator object test at 0x01E67440>
>>>


* 两者都支持手动迭代或者自动迭代。下面是示例代码

>>> g=(x for x in range(5))
>>> next(g)
0
>>> for item in g:
	print(item)

	
1
2
3
4
>>>


 

>>> def test():
	for x in range(5):
		yield x

		
>>> g=test()
>>> next(g)
0
>>> for item in g:
	print(item)

	
1
2
3
4
>>>


2.不同

生成器函数它里面可以放置更多的,而且对于send的支持,个人认为函数比表达式来的容易,例如:

如果我想传一个参数到表达式或者函数里面进行运行,然后打印,这个时候表达式很难完成(暂时笔者没有想到表达式的实现,如果有读者能够实现,请告知,谢谢)。

下面只是给出函数的实现:

>>> def test():
	for x in range(5):
		y=(yield x)+2
		print(y)

		
>>> g=test()
>>> next(g)
0
>>> g.send (3)
5
1
>>>


总结,这一章节主要说明了生成器函数与生成器表达式的联系与区别。

 

这一章节就说到这里,谢谢大家

------------------------------------------------------------------

点击跳转零基础学python-目录

 

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

本文转载自:http://blog.csdn.net/raylee2007/article/details/48864077

共有 人打赏支持
raylee2015
粉丝 6
博文 265
码字总数 44224
作品 0
江门
Python3+迭代器与生成器

转载Python3 迭代器与生成器 迭代器 迭代是Python最强大的功能之一,是访问集合元素的一种方式。 迭代器是一个可以记住遍历的位置的对象。 迭代器对象从集合的第一个元素开始访问,直到所有的...

xinet
2017/08/12
0
0
Python基础总结成千行代码,让Python入门更简单!

只要学会这千行代码,不管你是零基础还是弱基础或是没有接触过编程,都可以快速入门Python!当时我就不信邪啊,等我看完之后,即使作为一个Python老鸟了,还是领会到了很多教授他的独特见解!...

糖宝lsh
09/10
0
0
Python3 迭代器与生成器

迭代器 迭代是Python最强大的功能之一,是访问集合元素的一种方式。 迭代器是一个可以记住遍历的位置的对象。 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只...

Eappo_Geng
04/05
0
0
Python知识点总结篇(四)

递归 特性 - 必须有明确的结束条件; - 每进入深一层递归,问题规模比上层应有所减少; 递归效率不高,层次更多会导致栈溢出; 函数式编程 计算机:在计算机层面,CPU执行的是加减乘除以及各...

村雨1943
10/03
0
0
IronPython和C#交互

http://www.cnblogs.com/xukun588/ IronPython和C#交互 IronPython是一个.NET平台上的Python实现,包括了完整的编译器、执行引擎与运行时支持,能够与.NET已有的库无缝整合到一起。 IronPyth...

仰望星空_588
08/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何从平面设计转行到UI设计?

时代的变迁,科技的进步,工具的发展,薪资的差距,促使许多人转行的原因,但平面与界面两者之间有着哪些的差异呢?如果,想要转行又该具备哪些条件呢? 平面、界面设计之间的差异性 平面设计...

mo311
20分钟前
3
0
线程池整理

一般在生产环境中,我们都不会直接new一个Thread,然后再去start(),因为这么做会不断频繁的创建线程,销毁线程,过大的线程会耗尽CPU和内存资源,大量的垃圾回收,也会给GC带来压力,延长GC停顿时间...

算法之名
21分钟前
5
0
一句话说清分布式锁,进程锁,线程锁

转载自: https://www.cnblogs.com/intsmaze/p/6384105.html 在分布式集群中的开发中,线程锁往往不能支持全部场景的使用,必须引入新的分布式锁。 线程锁,进程锁,分布式锁 线程锁: 主要用...

nao
23分钟前
1
0
springboot2.x支持自定义JSP标签

JSP标签的tld必须放在webapp下的WEB-INF目录下 参考: https://stackoverflow.com/questions/44746757/using-custom-tag-files-in-jsp-with-spring-boot#...

EasyProgramming
25分钟前
1
0
pg数据库 upsert使用

原文地址 https://blog.csdn.net/rudygao/article/details/50498908 --创建测试数据表create table t (id int constraint idx_t_id primary key,name varchar(20) constraint cst_name no......

philonic
29分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部