人人都能学会的python编程教程15:高级特性2
生成器
如果你想要一百万个数,而这些数里只有一百个数是你经常要用的,剩下的都几乎不怎么会用到,那么如果直接把这一百万个数全部放在list中是不明智的因为这会浪费较多存储空间,生成器就是为了解决这个问题而生的。
如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器:generator。
生成器表达式: 通列表解析语法,只不过把列表解析的[]换成()
我们可以直接打印出list的每一个元素,但我们怎么打印出generator的每一个元素呢?
如果要一个一个打印出来,可以通过next()函数获得generator的下一个返回值:
当然这种获取值的方法很笨,所以我们一般用循环来迭代生成器的对象
迭代器
前面我们已经学过了for循环,我们知道for循环可以遍历list、tuple、dict、set、str和生成器。
这些可以直接作用于for循环的对象统称为可迭代对象:Iterable。
可以使用isinstance()判断一个对象是否是Iterable对象:
>>> from collections import Iterable
>>> isinstance([], Iterable)
> True
>>> isinstance({}, Iterable)
> True
>>> isinstance('abc', Iterable)
> True
>>> isinstance((x for x in range(10)), Iterable)
> True
>>> isinstance(100, Iterable)
> False
复制代码
凡是可作用于for循环的对象都是Iterable类型;
凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;
集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。
Python的for循环本质上就是通过不断调用next()函数实现的,例如:
人人都能学会的python编程教程15:高级特性2相关推荐
- python是人都能学会_人人都能学会的python编程教程15:高级特性2
生成器 如果你想要一百万个数,而这些数里只有一百个数是你经常要用的,剩下的都几乎不怎么会用到,那么如果直接把这一百万个数全部放在list中是不明智的因为这会浪费较多存储空间,生成器就是为了解决这个问题 ...
- 人人都能学会的python编程教程(基础篇)完整版
人人都能学会的python编程教程1:第一行代码 人人都能学会的python编程教程2:数据类型和变量 人人都能学会的python编程教程3:字符串和编码 人人都能学会的python编程教程4:关系运 ...
- 人人都能学会的python编程教程1:第一行代码
前言 众所周知,现在IT行业很火,行业薪酬也很高,国家在2017年也发布了人工智能教育的推广计划,人人会编程的时代将要到来.不会编程.不懂编程可能有些跟不上时代的节奏,普通人不懂技术也许会觉得这个很难 ...
- 人人都能学会的python编程教程3:字符串和编码
字符串 在python3中已经全面支持中文. 由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码.当Python解释器读取源 ...
- 人人都能学会的python编程教程11:定义函数
定义函数 在Python中,定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回. 我们以自定义一个求绝对值的my_ ...
- 人人都能学会的python编程教程14:高级特性1
切片 取一个list或tuple的部分元素是非常常见的操作.比如,一个list如下: L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack'] 第一个元素的索引 ...
- 人人都能学会的SHELL编程
目 录 1. Shell入门简介 1 2. Shell编程之变量详解 4 3. If条件语句学习 7 4. 使用if条件语句编写MySQL备份脚本 10 5. IF条件综合Shell实战脚本编写 11 ...
- 人人都能学会的 Python 多线程指南!
大家好,我是早起. 在 Python 中,多线程最常见的一个场景就是爬虫,例如这样一个需求,有多个结构一样的页面需要爬取,例如下方的URL(豆瓣阿凡达影评,以10个为例) url_list = ['h ...
- 文言文编程可以编译成PHP吗,人人都可以学会编译原理-开篇
编译技术在我们日常的工作中可以说无处不在,React JSX语法的解析,Typescript转化为Javascript,XML.JSON的解析,Spring字节码生成技术,PHP的模板引擎,还有最近很 ...
最新文章
- 谈谈Python那些不为人知的冷知识(二)
- 如何在 TensorFlow 中用深度学习修复图像?(附论文)
- 微服务架构——不是免费的午餐
- 关于软件外包的一些看法(转)
- 分析大咖说:做一个转化率提升 2% 的成功官网改版案例
- pyqt5讲解9:时间模块timer和网页交互
- 不需要SFU实现WebRTC联播实践
- 360数科 CTO 王继平:金融 IT 变革浪潮下,360数科的技术破局
- mysql set语句_从强网杯随便注浅析mysql存储过程
- phpmyadmin安装配置以及相关问题
- cad插件_CAD插件燕秀工具箱2.81
- labjs 分析转载
- pyecharts动态图表嵌入ppt
- SpringBoot自动装配的魔力
- java 支付宝支付 demo_java开发支付宝支付详细流程_demo的运行
- (可)变磁阻式传感器和磁阻式传感器的区别——原理、特点和应用
- 【pytest】(六) pytest中fixture的使用
- 爬虫取中间文本_【实战No.2】1小时打造你自己的网络爬虫
- 弘辽科技:提升销量没流量要继续提升吗?如何提高店铺流量?
- win10的0x0000225及0x000007b修复方法