python基础-迭代器
1.迭代:指的是一个重复的过程,每一次重复称为一次迭代,并且每一次重复的结果
是下一次重复的初始值
2.为什么要有迭代器
对于序列类型:str list tuple 可以依赖索引来迭代取值,但是对于dict,set,文件
python必须为我们提供一种不依赖于索引的迭代取值的方式》》》迭代器
3.可迭代的对象:有 obj.__iter__方法
a='asdd'
b=[1,2,3,4,5]
c=(1,2,3,4)
d={'aa':'bb','aac':'vvc'}
f=open('a.txt','w',encoding='utf-8')
a.__iter__
b.__iter__
c.__iter__
d.__iter__
f.__iter__
4.迭代器对象:obj.__iter__ , obj.__next__ 同时拥有这两个方法,只有文件是
f.__iter__
f.__next__
总结:1.可迭代对象不一定是迭代器对象,2.迭代器对象一定是可迭代对象
3.调用obj.__iter__()方法得到的是迭代器对象(对于迭代器对象执行__iter__得到的仍然是它本身)
len()等同于obj.__len__() iter 和 next同理
5.for循环详解:1.调用in后边的对象.__iter__()方法拿到迭代器对象2.执行next()方法3.捕捉StopIteration异常,结束迭代
优点:提供一种统一的、不依赖于索引的取值方式,为for循环的实现提供了依据
迭代器同一时间在内存中只存在一个值》》》》更节省内存
缺点:只能往后去,并且是一次性的
不能统计值得个数,即长度
python基础-迭代器的更多相关文章
- python基础——迭代器
python基础——迭代器 我们已经知道,可以直接作用于for循环的数据类型有以下几种: 一类是集合数据类型,如list.tuple.dict.set.str等: 一类是generator,包括生成器 ...
- python基础—迭代器、生成器
python基础-迭代器.生成器 1 迭代器定义 迭代的意思是重复做一些事很多次,就像在循环中做的那样. 只要该对象可以实现__iter__方法,就可以进行迭代. 迭代对象调用__iter__方法会返 ...
- python基础-迭代器和生成器
一.递归和迭代 1.递归:(问路示例) 递归算法是一种直接或者间接地调用自身算法的过程.在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解. 2.迭代:简单理 ...
- python基础 (迭代器回顾,生成器,推导式)
1.迭代器回顾 可迭代对象:Iterable 可以直接作用于for循环的对象统称为可迭代对象:Iterable.因为可迭代对象里面存在可迭代协议,所以才会被迭代 可迭代对象包括: 列表(list) 元 ...
- python基础----迭代器、生成器、协程函数及应用(面向过程实例)
一.什么是迭代器协议 1.迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代 (只能往后走不能往前退) 2.可迭代 ...
- Python基础-迭代器&生成器&装饰器
本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器&生成器 列表生成式 我现在有个需求,看 ...
- python基础--迭代器、生成器、内置函数、面向对象编程
迭代器:迭代器对象从集合的第一个元素开始访问,直到所有的元素都被访问完结束.迭代器只能往前不会后退 迭代:更新换代(重复)的过程,每次的迭代都必须基于上一次的结果 迭代器:迭代取值的工具 使用迭代器的 ...
- python基础--迭代器、生成器
(1)迭代器 可迭代对象和迭代器的解释如下: ''' 什么是对象?Python中一切皆对象,之前我们讲过的一个变量,一个列表,一个字符串,文件句柄,函数名等等都可称作一个对象,其实一个对象就是一个实例 ...
- Python基础—迭代器、生成器(Day13)
一.迭代器 1.可迭代对象:遵循可迭代协议,内部含有__iter__方法的对象就叫做可迭代对象.(str.list.tulpe.dict.set) 查询数据类型的方法 s = 'laonanhai' ...
随机推荐
- vagrant centos lamp小记
更新包 sudo yum -y update vagrant centos 默认语言好像是德语,看不懂,需要更换为 en_US [vagrant@localhost ~]$ locale LANG=d ...
- ci用户登录
[list] 预先加载数据库操作类和Session类 即在autoload.php中,$autoload['libraries'] = array('database', 'session'); a. ...
- ps -aux|grep mysql时候报错:Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
ps -aux|grep mysql时候报错:Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ ...
- Xshell 排版错乱问题
- JS while 循环
while循环:只要条件成立,就重复不断的执行循环体代码 while(条件判断) { 如果条件为true,则执行循环体代码 } while循环结构说明: 在循环开始前,必须要对变量初始化(声明变量 ...
- Android按钮绑定四种方式
public class MainActivity extends Activity implements OnClickListener{ @Override protected void onCr ...
- [Neo4j] 添加算法插件包
下载graph-algorithms-algo-xxx.jar包,我下的是3.5.3.1,放到neo4j目录的plugins文件夹下 修改 conf目录下的配置文件 neo4j.conf ,加一行: ...
- python pip安装扩展报错
1.安装tldr报错 (1)报错详情: [root@linuxnode1 ~]# pip install tldrCollecting tldr Downloading https://files.p ...
- vue_cli 安装
1.安装node 2.cmd node-v3.如果是刚刚安装输入 node-v 会成功出现版本 如果不是全局安装 过段时间输入 node-v会出现 'node' 不是内部或外部命令,也不是可运行的程序 ...
- P1082 同余方程(扩欧模板)
https://www.luogu.org/problem/P1082 #include <iostream> #include <cstdio> #include <q ...