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 #函数 函数的 定义 #定义一个求绝对值 ...
随机推荐
- SVG笔记
SVG可缩放矢量图形(Scalable Vector Graphics)是基于可扩展标记语言(XML),用于描述二维矢量图形的一种图形格式.SVG是W3C("World Wide Web C ...
- Linux自动化命令工具expect
expect是Unix系统中用来进行自动化控制和测试的软件工具,应用在交互式软件中如telnet,ftp,Passwd,fsck,rlogin,tip,ssh等等. 用法 Linux中我们经常写脚本处 ...
- 修改文件MD5值
1.查看文件的MD5值 (1)下载MD5Checker http://getmd5checker.com/download.html 或者 链接: https://pan.baidu.com/s/1e ...
- pymongo基础
PyMongo是MongoDB数据库的python模块 MongoDB是由C++语音编写的非关系型数据库,是一个基于分布式文件存储的开源数据库系统. win10 安装 4.0 使用官网的配置 使用 n ...
- allegro17.2 gerber 步骤
1.Manufacture -> NC -> Drill Customization... 先点击 Auto generate symbols,出来对话框后点击 YES .然后在Symbo ...
- os.path.dirname使用方法
import os path1=os.path.abspath(__file__) print(path1)#当前文件的绝对路径 path2=os.path.dirname(os.path.abspa ...
- DDD关键知识点整理汇总
创建领域对象采用构造函数或者工厂,如果用工厂时需要依赖于领域服务或仓储,则通过构造函数注入到工厂: 一个聚合是由一些列相联的Entity和Value Object组成,一个聚合有一个聚合根,聚合根是E ...
- windows----------telnet不是内部命令问题
1.
- 安装jar包到本地仓库和远程仓库
转载: https://blog.csdn.net/zengdongwen/article/details/81241198 如何部署到maven中央仓库呢? https://blog.csdn.ne ...
- codeforces-3
C Game"23" #include<iostream> using namespace std; int main() { long long n,m; long ...