python生成器简单了解
1.什么是生成器
通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。所以生成器就出现了,他弥补了直接生成大列表的不足,改成为定义某种计算过程,然后在需要的时候进行计算后得出想要的结果,从而节省了大量的内存空间。这就是生成器:generator
2.生成器的写法
第一种生成器的写法很简单,就是将列表生成式的[]改成()就得到了一个生成器,如下图。
列表生成式
生成器
这里可以看到在打印ll的时候并没有输出值,那我们应该怎么让他输出我们想要的东西呢?这时我们就要通过next()来输出了。
这里我们看到通过next()就将我们想要的值一一输出了。这里注意是每调用一次next就会输出一个值,然后再调用一次next会输出下个一值,一直到最后一个值输出。如果在全部被输出完成后再调用next则会报错。
第二种方法:yield
生成器非常强大,绝对不会只能完成上面的简单的工作,下面我们将会用生成器完成一个复杂的操作!斐波那契数列!(不知道此数列的请自行百度 除第一个和第二个数外,任意一个数都可由前两个数相加得到:1, 1, 2, 3, 5, 8, 13, 21, 34, ...)
这里的next(f)还可以用__next__()代替,用法如下
python生成器简单了解的更多相关文章
- python生成器简单代码了理解。
__author__ = 'ZHHT' #!/usr/bin/env python # -*- coding:utf-8 -*- #返回当前执行到的函数的返回值.并保持当前执行的状态.这时候先执行别的 ...
- python——生成器
python——生成器 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个 ...
- Python 实现简单的 Web
简单的学了下Python, 然后用Python实现简单的Web. 因为正在学习计算机网络,所以通过编程来加强自己对于Http协议和Web服务器的理解,也理解下如何实现Web服务请求.响应.错误处理以及 ...
- 用 python实现简单EXCEL数据统计
任务: 用python时间简单的统计任务-统计男性和女性分别有多少人. 用到的物料:xlrd 它的作用-读取excel表数据 代码: import xlrd workbook = xlrd.open_ ...
- python开启简单webserver
python开启简单webserver linux下面使用 python -m SimpleHTTPServer 8000 windows下面使用上面的命令会报错,Python.Exe: No Mod ...
- Python开发简单爬虫 - 慕课网
课程链接:Python开发简单爬虫 环境搭建: Eclipse+PyDev配置搭建Python开发环境 Python入门基础教程 用Eclipse编写Python程序 课程目录 第1章 课程介绍 ...
- python使用简单http协议来传送文件
python使用简单http协议来传送文件!在ubuntu环境下,局域网内可以使用nc来传送文件,也可以使用基于Http协议的方式来下载文件我们可以使用python -m SimpleHTTPServ ...
- Python超简单的HTTP服务器
Python超简单的HTTP服务器 安装了python就可以 python -m SimpleHTTPServer 执行这一个命令即可实现一个HTTP服务器,将当前目录设为HTTP服务目录,可以通过h ...
- 教学项目之-通过Python实现简单的计算器
教学项目之-通过Python实现简单的计算器 计算器开发需求 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/ ...
随机推荐
- 阿里云mysql数据库备份还原
1.下载备份包 在rds的备份恢复中点击下载,在弹出的窗口中复制内网下载地址(前提是目标服务器与rds内网互通,否则请复制外网地址) 在目标服务器中执行如下命令进行下载: wget -c '复制的地址 ...
- java后端导出excel表格
转载 :https://www.cnblogs.com/zhaoyuwei/p/9038135.html 不需要在实体类些@Excel(name = "登录名", width = ...
- Linux - route & traceroute & ip
route route - show / manipulate the IP routing table route 命令常用命令示例 #显示路由 route route -n # 不解析名字,快速显 ...
- [视频]youku与56客户端DLL却持
[视频]youku与56客户端DLL却持 https://pan.baidu.com/s/1c1ArnOk
- POJ 2603
#include<iostream> #include<stdio.h> #define M 350000 #define N 30000 using namespace st ...
- 3DMax——室内设计:墙体+吊顶
1.导入CAD平面图 2.将导入的平面图全部选中→颜色设置为其他颜色→设置为组(设置为组,是为了后期选材质方便) 3.选中图形,选择移动工具,输入坐标为0,右键选择冻结当前选择 4.右键“角度捕捉切换 ...
- oracle ASM安装过程中UDEV实现磁盘绑定
UDEV相较于ORACLE 自己的ASMlib 相对比较成熟. 文章转载自: Maclean Liu的个人技术博客 [http://www.oracledatabase12g.com/] 在< ...
- Ruby:线程实现经典的生产者消费者问题
运行结果: ProAndCon 0 produced 1 produced consumed 0 2 produced 3 produced consumed 1 consumed 2 consume ...
- CentOS命令行连接带密码的wifi
安装工具包 yum install -y wpa_supplicant 确定我们要连接的wifi的名称和密码,名称为ESSID.这里假设wifi名称为TPLINK,假设密码为password,下面请注 ...
- ES6基础教程一 学习笔记
一.变量的声明 1.var 声明全局变量 在ES6中var用来声明全局变量. 2.let 声明局部变量 3.const 声明常量 二.变量的解构赋值 //1.数组赋值 let [a,b,c]=[1,2 ...