迭代器-用
1、迭代器的概念
1、可迭代对象-iterable
str、list、tuple、dict、set、open()、range()
2、可迭代对象的概念:
其数据类型的执行方法中含有__iter__方法的,就是可迭代对象
li1 = [2,3,4]
print('__iter__' in dir(li1)) #True 说明li1-列表是可迭代对象
3、迭代器的概念--iterator
可迭代对象调用__iter__()方法后,生成的对象就是迭代器
例如:it1 = li1.__iter__() #这里的it1就是迭代器
4、迭代器中的方法__next__()
迭代器每调用一次__next__()方法,就取值一个元素,直到取值到最后一个元素后
再次调用__next__()方法,会报错StopIteration 2、迭代器的特点
1、节约内存
2、惰性(只有调用__next__()方法,才会取值一次)
3、只能往前取值,不能后退 3、迭代器的应用
1、for循环的常规写法
for循环的内部原理是通过迭代器实现的
迭代器给所有的可迭代的数据类型提供了一种统一的遍历方式(可迭代协议)
li1 = [2,3,4]
for i in li1:
print(i)
else:
print('循环结束了') 2、通过迭代器实现for循环--一步步执行__next__()
li1 = [2,3,4]
it1 = li1.__iter__() #it1就是生成可迭代对象-列表li1的迭代器-iterator
print(it1.__next__()) #2
print(it1.__next__()) #3
print(it1.__next__()) #4
# print(it1.__next__()) #报错 StopIteration 3、通过迭代器实现for循环--通过while循环
li1 = [2,3,4]
it1 = li1.__iter__() #it1就是生成可迭代对象-列表li1的迭代器-iterator
while 1:
try:
print(it1.__iter__())
except StopIteration:
print("循环结束了")
break #别忘记,这里是跳出整个while循环

Python【day 11】迭代器的更多相关文章

  1. Python之路迭代器协议、for循环机制、三元运算、列表解析式、生成器

    Python之路迭代器协议.for循环机制.三元运算.列表解析式.生成器 一.迭代器协议 a迭代的含义 迭代器即迭代的工具,那什么是迭代呢? #迭代是一个重复的过程,每次重复即一次迭代,并且每次迭代的 ...

  2. Python - 三大器 迭代器,生层器,装饰器

    目录 Python - 三大器 迭代器,生层器,装饰器 一. 容器 二. 可迭代对象(iterable) 三. 迭代器 四. 生成器 五. 装饰器 1. 定义 六. 闭包 Python - 三大器 迭 ...

  3. Python 闭包、迭代器、生成器、装饰器

    Python 闭包.迭代器.生成器.装饰器 一.闭包 闭包:闭包就是内层函数对外层函数局部变量的引用. def func(): a = "哈哈" def func2(): prin ...

  4. Python三大器之迭代器

    Python三大器之迭代器 迭代器协议 迭代器协议规定:对象内部必须提供一个__next__方法,对其执行该方法要么返回迭代器中的下一项(可以暂时理解为下一个元素),要么就引起一个Stopiterat ...

  5. Python基础之迭代器和生成器

    阅读目录 楔子 python中的for循环 可迭代协议 迭代器协议 为什么要有for循环 初识生成器 生成器函数 列表推导式和生成器表达式 本章小结 生成器相关的面试题 返回顶部 楔子 假如我现在有一 ...

  6. 十一. Python基础(11)—补充: 作用域 & 装饰器

    十一. Python基础(11)-补充: 作用域 & 装饰器 1 ● Python的作用域补遗 在C/C++等语言中, if语句等控制结构(control structure)会产生新的作用域 ...

  7. python is、==区别;with;gil;python中tuple和list的区别;Python 中的迭代器、生成器、装饰器

    1. is 比较的是两个实例对象是不是完全相同,它们是不是同一个对象,占用的内存地址是否相同 == 比较的是两个对象的内容是否相等 2. with语句时用于对try except finally 的优 ...

  8. python基础之迭代器协议和生成器

    迭代器和生成器补充:http://www.cnblogs.com/luchuangao/p/6847081.html 一 递归和迭代 略 二 什么是迭代器协议 1.迭代器协议是指:对象必须提供一个ne ...

  9. python设计模式之迭代器与生成器详解(五)

    前言 迭代器是设计模式中的一种行为模式,它提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示.python提倡使用生成器,生成器也是迭代器的一种. 系列文章 python设计模 ...

  10. 『Python基础-11』集合 (set)

    # 『Python基础-11』集合 (set) 目录: 集合的基本知识 集合的创建 访问集合里的值 向集合set增加元素 移除集合中的元素 集合set的运算 1. 集合的基本知识 集合(set)是一个 ...

随机推荐

  1. JS基础语法---do-while循环 + 总结while循环和do-while循环

    1. 总结:while循环和do-while循环 while循环特点:先判断,后循环,有可能一次循环体都不执行 do-while循环特点:先循环,后判断,至少执行一次循环体   对比体会:   1.  ...

  2. JavaScript:for循环中let与var变量的绑定

    碰到一道题: for(var i=0;i<2;i++){ setTimeout(function(){ console.log(i); },100) } //输出结果为:2 2 for(let ...

  3. 简单文件传输协议TFTP分析还原

    - 协议介绍 TFTP有如下特征: 1.UDP承载,请求端口固定为69: 2.没有列出目录内容功能: 3.无验证和加密机制: 4.仅有读取或写入文件功能: 5.支持三种不同的传输模式:"ne ...

  4. linux 在切换用户时出现:命令提示符-bash-4.1$错误解决

    有时候在使用用户登陆Linux系统时会发现,命令行提示符成了:-bash-4.1$,不显示用户名,路径信息. 原因:用户家目录里面与环境变量有关的文件被删除所导致的 也就是这俩文件:.bash_pro ...

  5. netcore中使用grpc

    简介 grpc是由google公司开发的一个高性能.开源和通用的RPC框架,采用HTTP/2通信. 1.gRPC的传输使用http/2支持双向流. 2.支持多语言,例如java.go.php.net. ...

  6. MongoDB安装调试

    1:安装 去mongodb的官网http://www.mongodb.org/downloads下载32bit的包 解压后会出现以下文件 在安装的盘C:下建立mongodb文件夹,拷贝bin文件夹到该 ...

  7. [前端] js中call方法的理解和思考

    最近接手前端的工作,对当前项目中自制的js框架下,js的使用产生了非常多的困惑.尤其是js的类,对象,函数,this等等相互之间的关系和转换,以前学过也忘得差不多了,现在基本相当于重新看. js中的函 ...

  8. Go命令行库Cobra的核心文件root.go

    因为docker及Kubernetes都在用cobra库,所以记录一下. 自定义的地方,高红标出. root.go /* Copyright © 2019 NAME HERE <EMAIL AD ...

  9. 批量执行用例,且结果显示在html中,python控制台也会显示运行过程

    下载HTMLTestRunner.py放到python安装目录的Lib下: 如下以登录为例,创建不同的.py文件, ========================================== ...

  10. [C2W1] Improving Deep Neural Networks : Practical aspects of Deep Learning

    第一周:深度学习的实用层面(Practical aspects of Deep Learning) 训练,验证,测试集(Train / Dev / Test sets) 本周,我们将继续学习如何有效运 ...