Python3学习笔记----生成器
生成器的作用
生成器可以在循环的过程中推算出后续的元素,不必创建完整的list,从而节省大量空间。
生成器的创建
1.把一个列表生成式的 [ ] 改写为( )
# -*- coding: UTF-8 -*-
gen= (x * x for x in range(10))
print(gen)
输出结果不是一个列表而是返回了一个生成器对象:
<generator object <genexpr> at 0x00000190FA193AF0>
2.使用了yield,以函数的形式实现生成器
# -*- coding: UTF-8 -*-
def my_function():
    for i in range(10000):
        yield i
f=my_function()
print(f)
输出的结果同样是返回了一个生成器对象
<generator object my_function at 0x0000017A6A213BA0>
遍历生成器
1.直接使用next()调用
# -*- coding: UTF-8 -*-
def generator():
    print ( 'step 1' )
    yield ( "hello" )
    print ( 'step 2' )
    yield ( "world" )
    print ( 'step 3' )
    yield ( "!" )
o = generator()
# next() 函数遍历迭代器
while True :
    try :
        print( next( o ) )
    except StopIteration :
        break
生成器函数在每次调用next的时候执行,遇到yield语句暂停保存当前所有的运行信息返回yield的值0,再次执行时从上次返回的yied语句处继续向下顺序执行,在yield掉所有的值后,next()会触发一个StopIteration的异常。
输出结果
step 1
hello
step 2
world
step 3
!
2.使用for循环遍历生成器
# -*- coding: UTF-8 -*-
def my_function():
    for i in range(10000):
        yield i
for i in my_function():
    print(i)
for循环会自动捕捉到StopIteration异常并停止调用next()。
Python3学习笔记----生成器的更多相关文章
- python3学习笔记(7)_listComprehensions-列表生成式
		
#python3 学习笔记17/07/11 # !/usr/bin/env python3 # -*- conding:utf-8 -*- #通过列表生成式可以生成格式各样的list,这种list 一 ...
 - python3学习笔记(6)_iteration
		
#python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #类似 其他语言的for循环,但是比for抽象程度更高 # f ...
 - Python3学习笔记(urllib模块的使用)转http://www.cnblogs.com/Lands-ljk/p/5447127.html
		
Python3学习笔记(urllib模块的使用) 1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, ...
 - Python3学习笔记 - 准备环境
		
前言 最近乘着项目不忙想赶一波时髦学习一下Python3.由于正好学习了Docker,并深深迷上了Docker,所以必须趁热打铁的用它来创建我们的Python3的开发测试环境.Python3的中文教程 ...
 - python3学习笔记(5)_slice
		
#python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #切片slice 大大简化 对于指定索引的操作 fruits ...
 - Python3学习笔记01-环境安装和运行环境
		
最近在学习Python3,想写一些自己的学习笔记.方便自己以后看,主要学习的资料来自菜鸟教程的Python3教程和廖雪峰官方网站的Python教程. 1.下载 1)打开https://www.pyth ...
 - python3学习笔记(9)_closure
		
#python 学习笔记 2017/07/13 # !/usr/bin/env python3 # -*- conding:utf-8 -*- #从高阶函数的定义,我们可以知道,把函数作为参数的函数, ...
 - python3学习笔记(8)_sorted
		
# python学习笔记 2017/07/13 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #python 内置sorted()函数 可以对list进 ...
 - python3学习笔记(4)_function-参数
		
#python学习笔记 17/07/10 # !/usr/bin/evn python3 # -*- coding:utf-8 -*- import math #函数 函数的 定义 #定义一个求绝对值 ...
 
随机推荐
- 常用的 jQuery 事件
			
$(document).ready(): $(document).ready() 方法允许我们在文档完全加载完后执行函数. click(): click() 方法是当按钮点击事件被触发时会调用一个函数 ...
 - opencart3产品页调用upc/数量等信息
			
opencart3产品页默认只调用标题.价格.型号等几个数据,如果想要调用更多的参数要如何操作呢?跟着ytkah一起来看看吧.首先打开/catalog/model/catalog/product.ph ...
 - weblogic的基础安装
			
安装java环境 不能使用centos自带的openjdk 必须使用源码安装 把下载的jdk-8u181-linux-x64.tar 解压到 /usr/src目录下 tar zxvf jd ...
 - requests库的基本使用
			
1.发送get请求 import requests # response=requests.get('http://www.baidu.com') # 查看响应内容,返回的是已经解码的内容 # res ...
 - Window Server配置Flask
			
1.安装了Chrome 2.安装git 3.创建SSH key:ssh-keygen -t rsa -C "youremail@example.com" 4.安装notepad++ ...
 - git merge后如何撤销
			
merge后发现冲突太多,或者合并的分支代码并不是最新,那就直接撤销再合并好了. git reset --hard HEAD 用来撤销还没commit 的merge,其实原理就是放弃index和工作区 ...
 - Mac对gdb签名
			
codesign -f -s gdb-cert $(which gdb) gdb_cert为自己创建的证书名 添加证书信任 activity-monitor双击taskgated 关闭 gdb成功运行
 - 关于eclipse常用的一些快捷键
			
Ctrl+Alt+H :查看方法被哪些代码调用了 Ctrl + Shif +O :自动引导类包 Ctrl+Shift+/ : 加上段注释 Ctrl+Shift+\ : 取消段注释 ALT+/ ...
 - c# 有序链表合并 链表反转
			
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
 - linux 笔记  第一天
			
打开终端:ctrl+alt+t 清屏:ctrl+l 在终端在退出锁定:ctrl+c 目录:又称为文件夹,是包含所有的文件 目录创建规则: 1.大小是256 2.不能包含特殊字符 3.见名知义 路径:是 ...