1、什么是迭代器

迭代器 指的是迭代取值的工具,迭代是一个重复的过程,

每次重复都是基于上一次的结果而继续的,

单纯的重复并不是迭代。

比如:A+B生育了C, C+D=>E,生育过程是迭代,

克隆就不是迭代。

2、为何要有迭代器

迭代器是用来迭代取值的工具,而涉及到把多个值循环取出来的类型有:

列表、字符串、元组、字典、集合、打开的文件对象

实现一个简单的迭代取值功能(基于索引)

list001 = ["abc", "bbc", "cba", "bbq"]

i = 0

while i < len(list001):

print(list001[i])

i += 1

上面这种迭代取值的方式只适用于有索引的数据类型:列表,字符串,字典

为了解决基于索引迭代取值的局限性,python必须提供一种能够不依赖索引的取值方式,这就是迭代器

首先,了解一下“可迭代对象”:可以转换成“迭代器”的对象

可迭代对象:但凡内置有 _ iter _ 方法的都称之为可迭代对象

''.__iter__()

[].__iter__()

().__iter__()

{}.__iter__()

with open("a.txt", mode="w") as f:

f.__iter__()

pass

(字符串,列表,元组,字典,集合, 打开的文件,都是可迭代对象)

调用 可迭代对象下的 _ iter_ 方法会将其转换成迭代器对象

d = {"a": 1, "b": 2, "c": 3}

res = d.__iter__()

print(res)

运行结果:

转换成迭代器后,有一个 _ next _ 方法

d = {"a": 1, "b": 2, "c": 3}

res = d.__iter__()

print(res)

print(res.__next__())

print(res.__next__())

print(res.__next__())

运行结果:

a

b

c

--------分界线--------

#重复执行迭代器会怎样?

#在一个迭代器取值取干净的情况下,再对其取值,取不到

#必须再调用一次迭代器才能取值

#步骤: 1、调用迭代器 2、取值

d = {"a": 1, "b": 2, "c": 3}

res = d.__iter__()

while True:

try:

print(res.__next__())

except StopIteration:

break

print("=====>>>>>")

# 重复执行迭代器会怎样?

# 在一个迭代器取值取干净的情况下,再对其取值,取不到

# 必须再调用一次迭代器才能取值

# 步骤: 1、调用迭代器 2、取值

res = d.__iter__()

while True:

try:

print(res.__next__())

except StopIteration:

break

3、可迭代对象与迭代器对象详解可迭代对象(“可以转换成迭代器的对象”):内置有_ iter _方法 的对象

可迭代对象.__iter__() :得到迭代器对象

迭代器对象:内置有 _ next _ 方法,并且内置有 _ iter _方法 的对象

迭代器对象.__next__() :得到迭代器的下一个值 迭代器对象.__iter__() :得到迭代器的本身,就是,调了跟没调用一样 这是为了让 for 幕后统一格式

for 循环的工作原理(for循环就是“迭代器循环”)从 d._ iter _() 那里得到一个迭代器对象

从 迭代器对象._ next _() 那里拿到一个返回值,然后将该返回值赋值给 k

循环往复步骤2,直到抛出 StopIteration 异常,for循环会捕捉异常,然后结果循环

print("----for----")

for k in d:

print(k)

代码运行结果:

a

b

c

=====>>>>>

a

b

c

----for----

a

b

c

码字不易,如果此文章对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。

python迭代器举例_如何最简单、通俗地理解Python的迭代器?相关推荐

  1. python封装举例_卷1:第14章 Python打包工具

    ⋮ ⋮ ⋮ MontyLingua mootiro_web Mopidy mopowg MOPPY MPTools morbid Morelia morse ⋮ ⋮ ⋮

  2. python内置的装饰器最通俗的讲解_如何最简单、通俗地理解Python的装饰器?

    目录: 一.笔记 二.我的自学路线 三.笔记目录 一.笔记 1) 装饰器的定义 ① 装饰器就是给已有函数增加额外功能的函数,它本质上就是一个闭包函数. ② 装饰器的功能特点:1. 不修改已有函数的源代 ...

  3. mongodb 监听不到端口_干货|MongoDB简单操作和通过python进行操作

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 这次我们主要来简单的讨论一下在MongoDB中如何更新数据(修改数据),删除数据,以及 ...

  4. 为什么一个程序中变量只能定义一次_#带你学Python# 从简单程序出发理解Python基本语法

    欢迎回来. 通过上一篇文章,我们第一次触摸了Python,学会了如何用各种不同的方式运行Python的解释器.也介绍了很多工具和开发环境,是不是跃跃欲试了? 到这里,别的python教程就会从数据类型 ...

  5. sublime python 断点测试_通过sublime简单的调试Python程序

    1.打开Sublime Text 3,工具(Tools)-->编译系统(Build System)-->新编译系统(Build New System),就会打开文件 untitled.su ...

  6. python 字符串拼接_面试官让用 3 种 python 方法实现字符串拼接 ?对不起我有8种……...

    点击上方 蓝字关注我们 点击上方"印象python",选择"星标"公众号重磅干货,第一时间送达!之前发过很多关于 Python 学习的文章,收到大家不少的好评, ...

  7. 如何快速简单粗暴地理解Python中的if __name__ == ‘__main__‘

    1. 摘要 通俗的理解__name__ == '__main__':假如你叫小明.py,在朋友眼中,你是小明(__name__ == '小明'):在你自己眼中,你是你自己(__name__ == '_ ...

  8. 儿童 编程 python 知乎_知乎热议!学完Python之后,我的编程能力竟然退化了!

    来源:雪球App,作者: 雪_雪雪_球,(https://xueqiu.com/7788828530/135705417) 在知乎上有一个特别火的问题:如何学Python? 你会看到很多高赞回答是: ...

  9. python 视频剪辑_视频剪辑太麻烦?用Python带你高效创作短视频

    近两年,抖音.快手将短视频推到风口浪尖上,要生产出高质量的视频,离不开视频剪辑这一环节:在全民剪片浪潮中,大众使用最多的剪辑软件如:Pr.FCPX.剪印.Vue 等.视频剪辑过程中,Python 一些 ...

最新文章

  1. 架构思维:系统容量设计
  2. 纯CSS实现圆角矩形框
  3. 一个比传统数据库快 100-1000 倍的数据库
  4. zsh 使用通配符功能
  5. [模板] 线筛欧拉函数
  6. dlna和miracast可以共存吗_同屏镜像功能哪家强?DLNA miracast等技术解读
  7. 易语言批量替换html,易语言实现批量文本替换操作的代码
  8. jmp软件(jMP软件正交设计交互作用)
  9. linux版本qq,QQLinux版下载-QQ for Linux下载v2.0.0 最新版-西西软件下载
  10. Class ‘xxx‘ is public, should be declared in a file named ‘xxx.java‘
  11. 固态硬盘数据如何恢复
  12. 一文详细介绍情绪识别常用的数据集
  13. springboot闲置衣物捐赠系统毕业设计源码021009
  14. 最美中国字|“粘”字书写技巧这样写,保证工整又好看!
  15. 【零成本 超详细】使用Win10自带的Hyper-V管理工具搭建虚拟机
  16. 洛谷P3336 [ZJOI2013]话旧 题解
  17. 安装gosublime插件出现See the `Quirks` section of USAGE.md for info
  18. 在数组中 找左边都比其小右边都比其大的元素
  19. VS2008安装SP1补丁后智能提示从中文变为英文的解决办法
  20. 英语语法——状语和状语从句

热门文章

  1. Dynamics CRM 依赖组件类型为应用程序功能区导致的无法删除实体问题的解决方法...
  2. 获取当前程序运行的主机名称
  3. 用busybox制作并配置根文件系统
  4. 计算机网络学习笔记-1.1.5-分层结构、协议、接口、服务
  5. 设计模式——抽象工厂
  6. 【计算机网络复习】1.1.4 时延、时延带宽积、RRT和利用率
  7. Leetcode--820:单词的压缩编码(java)
  8. 【剑指offer】面试题6:从尾到头打印链表(Java)
  9. java单元格合并多列_ElementUI表格列相同值自动合并单元格( 多列 )
  10. 测试流程图_挑战美国Postman VS 龙测搭积木接口测试,谁与争锋