python生成器的使用方法
发布时间:2021-12-03 22:40:49
什么是生成器?
生成器是一个包含了特殊关键字yield的函数。当被调用的时候,生成器函数返回一个生成器。可以使用send,throw,close方法让生成器和外界交互。
生成器也是迭代器,但是它不仅仅是迭代器,拥有next方法并且行为和迭代器完全相同。所以生成器也可以用于python的循环中,
生成器如何使用?
首先看一个例子:
#!/usr/bin/python
# -*- coding: utf-8 -*-
def flatten(nested):
for sublist in nested:
for element in sublist:
yield element
nested = [[1,2],[3,4],[5,6]]
for num in flatten(nested):
print num,
结果为1,2,3,4,5,6
递归生成器:
#!/usr/bin/python
# -*- coding: utf-8 -*-
def flatten(nested):
try:
for sublist in nested:
for element in flatten(sublist):
yield element
except TypeError:
yield nested
for num in flatten([[1,2,3],2,4,[5,[6],7]]):
print num
结果为:1 2 3 2 4 5 6 7
让我们一起来看看生成器的本质
首先看下:
#!/usr/bin/python
# -*- coding: utf-8 -*-
def simple_generator():
yield 1
print simple_generator
def repeater(value):
while True:
new = (yield value)
if new is not None: value = new
r = repeater(42)
print r.next()
print r.send('hello,world!')
结果为:
<function simple_generator at 0x10c76f6e0>
42
hello,world!
可以看出:
1)生成器就是一函数
2)生成器具有next方法
3)生成器可以使用send 方法和外界交互。


猜你喜欢
- 一、'建立register.asp 代码如下:<%@ language=vbscript %>&nb
- python安装完成后,直接运行python.exe能够正常执行python程序。但是进入到cmd命令窗口(同时按下win+r组合键后输入c
- 本文主要给大家介绍了关于MySQL服务自动停止的解决方法,分享出来供大家参考学习,下面来一起看看:问题描述服务器上安装的 MySQL,会出现
- 空白双边距是一个极容易误解的CSS特性.它不是CSS的bug,但如果我们一旦误解,将会给你带来很多麻烦.先看如下demo代码:<!do
- 因文件格式要求,需要将docx 与doc文件相互转换,特寻找python代码,与大家共分享from win32com import clie
- 卷积在pytorch中有两种实现,一种是torch.nn.Conv2d(),一种是torch.nn.functional.conv2d(),
- 使用conda安装requirement.txt的扩展包当你在GitHub上下载了代码时,可以看到有一个requirements.txt文件
- A.截取从字符串左边开始N个字符 Declare @S1 varchar(100) Select @S1='http://www.x
- 我就废话不多说了,直接上代码吧!import cv2from math import fabs, sin, cos, radiansimpo
- 我们知道,session是一种会话技术,用来实现跨脚本共享数据或者检测跟踪用户状态。session的工作原理(1)当一个session第一次
- 前言numpy支持对矩阵和数组进行运算,因此很多numpy的很多运算都需要指定操作的维数参数axis(当然这些axis都有带默认值的),本博
- 当列表菜单项目特别多的时候,使用JavaScript手风琴菜单(Accordion Menus)是个不错的选择。手风琴折叠菜单利于组织菜单项
- 有助于效率的类型选择1、使你的数据尽可能小最基本的优化之一是使你的数据(和索引)在磁盘上(并且在内存中)占据的空间尽可能小。这能给出巨大的改
- 在Python2和Python3中都提供print()方法来打印信息,但两个版本间的print稍微有差异主要体现在以下几个方面:1.pyth
- 1.什么是事务:事务是一个不可分割的工作逻辑单元,在数据库系统上执行并发操作时事务是做为最小的控制单元来使用的。他包含的所有数据库操作命令作
- 作为一位不懂代码的业余网页制 * 好者,常常羡慕专业程序人员在浏览器中编制出的效果超酷的一些多媒体作品。唉,无奈程序那东东,酶涩南学,非一日之
- 铃铃铃…… 上课了老师在黑板写着这么一个标题 《Python: 你所不知道的星号 * 用法》同学A: 呃,星号不就
- 目前手边的一些工作,需要实现声音播放功能,而且仅支持wav声音格式。现在,一些网站上支持文字转语音功能,但是生成的都是MP3文件,这样还需要
- 用python操作ms sqlserver,有好几种方法:(1)利用pymssql (2)利用pyodbc这里讲import&nb
- 第一次用layui,正在摸索中,今天在学习layui的时候在项目中看到一个表单提交,表单的数据传到后台是怎么自动封装到实体类里面的呢?1、表