文档章节

零基础学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
江门
私信 提问
加载中

评论(0)

Python小白学习之路(二十二)—【生成器】

一.什么是生成器? 生成器可以理解成是一种数据类型,特殊地是生成器可以自动实现迭代器协议 其他的数据类型需要调用自己内置的iter方法 所以换种说法,生成器就是可迭代对象 !回忆:很重要...

osc_yc40ey49
2018/12/04
3
0
python 迭代器协议和生成器

一、什么是迭代器协议   1.迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个stoplteration异常,以终止迭代(只能往后走,不能往前退)   ...

osc_sorhmiqq
2019/01/20
4
0
python(列表推导式和生成器表达式)

从母鸡下蛋的故事讲起 1 老母鸡 = ('鸡蛋%s'%i for i in range(10))2 print(老母鸡)3 for 蛋 in 老母鸡:4 print(蛋)5 g = (i*i for i in range(10))6 for i in g:7 print(i) ①把列表解析的[......

osc_r8gstrez
2018/10/12
1
0
Python学习笔记014——生成器Generator

1 生成器定义 在Python中,一边循环一边计算的机制,称之为生成器(generator)。 生成器是一个迭代器。 含有yield语句的函数是生成器函数,该函数被调用时返回一个生成器对象(yield译为产生...

osc_yjaivn42
2018/01/18
2
0
面试必备|带你彻底搞懂Python生成器

作者 | Rocky0429 转载自 Python空间(ID:Devtogether) 写在之前 Python 的高级语言特性一直是我们学习 Python 的一个难点,大部分人并没有做到熟练的掌握,甚至去学习它都感觉很困难,「生...

AI科技大本营
2019/02/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

时间片轮询法

时间片轮询法 时间片轮询法是一种比较简单易用的系统架构之一,它对于系统中的任务调度算法是分时处理。核心思路是把 CPU 的时间分时给各个任务使用。我们常用的定时方法是定时器,把调度器放...

osc_j7rfhwi0
51分钟前
15
0
二项堆(三)之 Java的实现

概要 前面分别通过C和C++实现了二项堆,本章给出二项堆的Java版本。还是那句老话,三种实现的原理一样,择其一了解即可。 目录 1. 二项树的介绍 2. 二项堆的介绍 3. 二项堆的基本操作 4. 二项...

osc_ct8a6sdg
51分钟前
9
0
Windows 10 安装 Hadoop 2.10

  1. 配置JAVA_HOME环境和Hadoop环境:      2. 配置bin   3. 进入Hadoop中/etc/hadoop下     配置hdfs-site.xml增加:    <property> <!-- 单节点,所以配置成1 -->...

osc_jmtenr3d
52分钟前
32
0
如何让你在众多二手车中挑中满意的?python帮你实现(附源码)

前言 老司机带你去看车,网上的几千条的二手车数据,只需几十行代码,就可以统统获取,保存数据到我们本地电脑上 知识点: 1.python基础知识 2.函数 3.requests库 4.xpath适合零基础的同学 ...

osc_rmqoxylv
53分钟前
12
0
Selenium IDE使用指南三(控制流)

Selenium IDE附带的命令使您可以添加条件逻辑和循环到测试中。 这使您仅在满足应用程序中的某些条件时才执行命令(或一组命令),或根据预定义的标准重复执行命令。 JavaScript表达式 通过使...

分布式编程
53分钟前
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部