day13 for内部机制详解,迭代器
迭代器定义:
可迭代协议:含有iter方法的都是可以迭代的
迭代器协议: 有.next 方法,和iter的都是迭代器
必须存在终结
特点:
节省空间
方便逐个取值,一个迭代器只能取一次
简单来说:满足可迭代协议以及迭代器协议的就可以被定义为迭代器
iter()-----等同于-------->.__iter__() 作用相等
next()-----等同于-------->.__next__() 作用相等
字符串,列表,元祖,字典,集合,文件对象 都不是可迭代对象
除非加上__iter__()方法才可以迭代
可迭代对象才可以调用__next__()方法
for循环机制内部原理
1. 调用了_iter_()方法,把列表变成可迭代对象
2. 调用_next_()方法迭代读取,直到捕捉到异常然后结束
3. 捕捉到异常,处理异常状态然后正常结束for循环
l = [1,2,3]
for i in l:
print(i)
l = [1,2,3]
iter_test = l.__iter__()
print(iter_test.__next__())
print(iter_test.__next__())
print(iter_test.__next__())
print(iter_test.__next__())
如果不要for 循环我们可以用while来循环达到相同的效果
l = [1,2,3,4,5]
index = 0
while index<len(l):
print(l[index])
index += 1
既然while可以完成工作,为毛还需要for呢?
while你很能啊,字典集合哪来的下标,你再试试看啊?
而for是可以的。for可以遍历非序列类型,文件,字典,集合,在这一点上for循环就甩开了while十条街。
集合的for循环机制
dis = {1,2,3}
# for i in dis:
# print(i) iter_dis = dis.__iter__()
print(iter_dis.__next__())
print(iter_dis.__next__())
print(iter_dis.__next__())
字典的for循环机制
字典的for循环默认的执行得出的结果就是key的循环
dic = {"a":1,"b":2}
# for i in dic:
# print(i)
# print(dic[i]) iter_dic = dic.__iter__()
print(iter_dic.__next__())
print(iter_dic.__next__())
文件的for循环机制
f = open("test.txt","r+")
# for i in f:
iter_f = f.__iter__()
print(iter_f.__next__())
print(iter_f.__next__())
print(iter_f.__next__())
next()-----等同于--------> .__next__()
l = ["die","erzi","sunzi","chongsunzi"]
iter_l = l.__iter__()
# print(iter_l.__next__())
# print(iter_l.__next__())
# print(iter_l.__next__())
# print(iter_l.__next__()) print(next(iter_l))
print(next(iter_l))
print(next(iter_l))
print(next(iter_l))
day13 for内部机制详解,迭代器的更多相关文章
- ElasticSearch 文档(document)内部机制详解
1.数据路由 1.1 文档存储怎么路由到相应分片? 一个文档,最终会落在主分片的一个分片上,到底应该在哪一个分片?这就是数据路由. 1.2 路由算法 shard = hash(routing) % n ...
- 大数据Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解
微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验. ...
- Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解
转自:http://blog.csdn.net/iamdll/article/details/20998035 分类: 分布式 2014-03-11 10:31 156人阅读 评论(0) 收藏 举报 ...
- 从mixin到new和prototype:Javascript原型机制详解
从mixin到new和prototype:Javascript原型机制详解 这是一篇markdown格式的文章,更好的阅读体验请访问我的github,移动端请访问我的博客 继承是为了实现方法的复用 ...
- ThreadPoolExecutor运转机制详解
ThreadPoolExecutor运转机制详解 - 走向架构师之路 - 博客频道 - CSDN.NET 最近发现几起对ThreadPoolExecutor的误用,其中包括自己,发现都是因为没有仔细看 ...
- Java 反射 设计模式 动态代理机制详解 [ 转载 ]
Java 反射 设计模式 动态代理机制详解 [ 转载 ] @author 亦山 原文链接:http://blog.csdn.net/luanlouis/article/details/24589193 ...
- 转 Java虚拟机5:Java垃圾回收(GC)机制详解
转 Java虚拟机5:Java垃圾回收(GC)机制详解 Java虚拟机5:Java垃圾回收(GC)机制详解 哪些内存需要回收? 哪些内存需要回收是垃圾回收机制第一个要考虑的问题,所谓“要回收的垃圾”无 ...
- 深入理解mybatis原理, Mybatis初始化SqlSessionFactory机制详解(转)
文章转自http://blog.csdn.net/l454822901/article/details/51829785 对于任何框架而言,在使用前都要进行一系列的初始化,MyBatis也不例外.本章 ...
- JavaScript运行机制详解
JavaScript运行机制详解 var test = function(){ alert("test"); } var test2 = function(){ alert(& ...
随机推荐
- 如何应用ML的建议-下
正则化与过拟合(highvariance)和欠拟合(highbias)的关系-部分(五) ML的诊断方法-部分(六) 如何采取下一步-部分(七) 部分(五) 从图中可以看出,正则化项可以用来影响模型函 ...
- Redis缓存的使用
首先需要去Redis官网下载Redis的安装包 要在eclipse中使用Redis还需要两个jar包,需要的自行查找或者联系我 运行Redis需要开启Redis的服务端,也就是下载的安装包中的“red ...
- Luogu3676 小清新数据结构题 动态点分治
传送门 换根类型的统计问题动态点分治都是很好做的. 设所有点的点权和为$sum$ 首先,我们先不考虑求$\sum\limits_i s_i^2$,先考虑如何在换根的情况下求$\sum\limits_i ...
- CF28D Don't fear, DravDe is kind 背包
题目传送门:http://codeforces.com/problemset/problem/28/D 题意:给你$N$个物品,每个物品有其价格$P_i$,之前必须要买的物品价格和$L_i$,之后必须 ...
- C# WPF DataGrid 分组(Group)
原文:C# WPF DataGrid 分组(Group) 效果如图,每个列的名字可以自定义.我随便用了”File”和”Attachment Name”. 在Window的Resources里面设置S ...
- BZOJ 4804: 欧拉心算
数论题不多BB,直接开始推导吧: \(\sum_{i=1}^n \sum_{j=1}^n \phi(gcd(i,j))\) \(=\sum_{i=1}^n \sum_{j=1}^n \sum_{d=1 ...
- SequenceFile文件
SequenceFile文件是Hadoop用来存储二进制形式的key-value对而设计的一种平面文件(Flat File).目前,也有不少人在该文件的基础之上提出了一些HDFS中小文件存储的解决方案 ...
- Kafka基础系列第1讲:Kafka的诞生背景及应用
Kafka 是由 LinkedIn 开发的一个分布式的消息系统,使用 Scala 编写,它以可水平扩展和高吞吐率而被广泛使用.目前越来越多的开源分布式处理系统如 Cloudera.Apache Sto ...
- nginx域名访问的白名单配置梳理
在日常运维工作中,会碰到这样的需求:设置网站访问只对某些ip开放,其他ip的客户端都不能访问.可以通过下面四种方法来达到这种效果:1)针对nginx域名配置所启用的端口(比如80端口)在iptable ...
- SCRUM 12.20
以下为我们爬虫遇到问题的报告 我们团队的m2阶段原本计划是爬取美团的信息以支持我们的app对比功能,但在这一阶段遇到很多问题,主要表现如下: 美团反爬机制: 由于我们团队人员在事先并不知道美团具有反爬 ...