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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/501754.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android代码判断权限,安卓权限检测代码

Android 23 以后加入了新的权限检查机制&#xff0c;对一些危险权限&#xff0c;进行了新的授权管理&#xff0c;以让用户明确app都是用了哪些权限&#xff0c;这也让我们的开发多做了一些工作。public class BaseActivity extends Activity {protected static final int REQ_C…

burpsuite小米手机抓包_使用burpsuite实现Android APP的HTTPS抓包

0x00 序在对app做安全测试时&#xff0c;通常会需要对app的网络通信进行抓包&#xff0c;但是面对app使用了https包时&#xff0c;由于手机没有burp的证书&#xff0c;因此可能会导致该次通信失败&#xff0c;所以下面的文章主要讲述如何通过burp抓取app的https包。0x01 获取bu…

android fragment framelayout,framelayout中fragment的切换

我们在android开发中经常会用到fragment&#xff0c;例如侧拉栏的切换&#xff0c;viewPager的切换。而我们切换fragment无非就两种方法&#xff1a;1.replace()&#xff1b;2.add()&#xff0c;hide()&#xff0c;show()&#xff1b;两种发方法相比较而言&#xff0c;我更加推…

透明大页相关内核参数_透明大内存页Hugepage支持

目标在linux2.6.38之前&#xff0c;处理大容量内存工作集的高性能关键计算应用是运行在libhugetlbfs之上&#xff0c;必须依赖于hugetlbfs&#xff0c;。透明Hugepage支持是一种替代手段&#xff0c;它使用大内存页&#xff0c;并且虚拟内存页的大小可以动态变化&#xff0c;没…

c语言五子棋斜向判断,c语言 五子棋危险判断 求大神解释啊

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼代码#include #define right r#define lower l#define lower_right i#define lower_left e#define none oint table[19][19];int hit_space(int x, int y, char vec){if (vec right){if (x - 1 > 0 && table[x - 1][y]…

vue项目接口地址暴露_vue组件暴露和.js文件暴露接口操作

1、将同一类型的组件放在一个文件夹下2、在此文件夹下创建一个index.js3、在index.js中导入组件&#xff0c;并把他们暴露出去1、写法一import studentCourse1 from ./studentCourse.vueimport studentInfo1 from ./studentInfo.vueexport var studentCoursestudentCourse1expo…

linux编译lnx文件命令_linux命令dd

dd使用dd这个linux命令可以创建一定大小文件。linux创建文件命令&#xff1a;dd命令把指定的输入文件拷贝到指定的输出文件中&#xff0c;并且在拷贝的过程中可以进行格式转换。语法&#xff1a;CODE:[Copy to clipboard]dd 〔选项〕QUOTE:if 输入文件(或设备名称)。of 输出文件…

android opencv 水印,关于opencv对图片添加水印

有一段时间没有写博客了&#xff0c;最近因为自己需要给图片添加水印&#xff0c;就写了个简单的图片添加水印python:3.6.7pycharmopencv是一个开源的库&#xff0c;是有c编写&#xff0c;支持c &#xff0c;python&#xff0c;java和matlab接口&#xff0c;并支持windows&…

python做一个窗口样式_python3+PyQt5 自定义窗口部件--使用窗口部件样式表的方法...

本文借用HTML的css语法&#xff0c;将样式表应用到窗口部件。这里只是个简单的例子&#xff0c;实际上样式表的语法很丰富。以下类似于css&#xff1a;StyleSheet """QComboBox { color: darkblue; }QLineEdit { color: darkgreen; }QLineEdit[mandatory"…

华为开发微信鸿蒙版,HUAWEI DevEco Studio

华为鸿蒙2.0开发平台为开发者在PC上面所提供的的开发平台&#xff0c;这个平台能够让用户在PC和Mac上面完成对鸿蒙相关开发内容&#xff0c;开发者能够在这个官方的平台当中开发属于自己的应用内容&#xff0c;更好的开发属于自己的应用并且在上面进行全面的调试&#xff0c;感…

linux安装python3.6 setuptools_linux下安装Python3.6.1

linux下安装Python3.6.1Python-3.6.1下载wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz解压、编译、安装tar Jxvf Python-3.6.1.tar.xzcd Python-3.6.1./configure --prefix/usr/local/python3make && make install最终显示下面代码表示python3…

function里面可以写function吗_和田玉不戴的时候,可以长时间泡在水里面吗?

叶子珠宝翡翠批发商城数百万玉石好友聚集地翡翠行业最活跃的领军&#xff0c;实力收藏家都在关注新朋友请点击叶子珠宝翡翠批发商城关注&#xff01;抢购源头翡翠&#xff01;请加1号店微信号&#xff1a;stchenchuye(←长按复制请加2号店微信号&#xff1a;feicui1236(←长按复…

shell判定一个变量等于-n_Shell test命令:条件判断,检查某条件是否成立

test 命令是 Bash 中重要的判断命令&#xff0c;也是 Shell 脚本中条件判断的重要辅助工具。当我们需要让程序自动判断哪些事情是成立的时&#xff0c;test 命令就派上用场了。按照文件类型进行判断根据表 1&#xff0c;我们先来看看 test 可以进行哪些文件类型的判断。表 1 文…

android智能老人机系统,国产老人机也可以变智能!可运行Android

原标题&#xff1a;国产老人机也可以变智能&#xff01;可运行Android相信很多用户对老人机的认知都是大电池、小屏幕、高音量以及功能少。看完下边这个老年机&#xff0c;你的认知可能会被颠覆。微博用户极客村长今天在微博上放出了一张来自国内厂商TETC的老人机图片&#xff…

android时间最大,Android TimePickerDialog设置最大时间

对于lolipop和更高版本的android&#xff0c;您可以使用此修改过的RangeTimePickerDialog类(从lolipop&#xff0c;Timepicker默认使用时钟模式(材料设计)&#xff0c;因此旧的自定义类将无法使用。我们可以将模式更改为Spinner以获取最新版本&#xff0c;并可以重用该类)publi…

css毛玻璃效果白边_css3毛玻璃效果白边问题_html/css_WEB-ITnose

注&#xff1a;css3毛玻璃效果应该很多人都知道怎么实现&#xff0c;但是有个问题是图片模糊了之后相当于缩小了&#xff0c;所以颜色深的图片会出现白边&#xff0c;这里说下我参考网上的解决方式吧&#xff01;1、毛玻璃实现方法&#xff1a;CSS3 blur滤镜实现如下测试代码&a…

如何把html转换cad,Tab2Xls插件(捷克版)将AutoCAD表格转换为XLS、CSV或HTML。

一、插件简介Tab2Xls-将表导出到XLS、CSV或HTMLTab2Xls是一个用于AutoCAD的LISP实用程序&#xff0c;用于导出将AutoCAD表格转换为XLS、CSV或HTML。启动TAB2XLS命令并选择一个table对象-Excel应用程序将启动&#xff0c;表格将以选定的名称保存(默认情况下&#xff1a;绘图路径…

python问卷调查数据分析_如何用excel统计调查问卷

有些人可能经常要对调查问卷进行统计&#xff0c;使用手写的方法(就是在纸上写正字的方法)虽然很方便&#xff0c;不过不方便在一定条件下进行统计&#xff0c;如在男士的条件下&#xff0c;使用诺基亚的手机有多少人。而用excel可以很方便得出此类统计结果&#xff0c;并且由于…

html中什么是语义,html – “语义正确”是什么意思?

标签正确这意味着你正在调用它实际上是什么。典型的例子是&#xff0c;如果某个表是一个表&#xff0c;它应该包含行和数据列。要用于布局语义上是不正确的 – 你不是说“这是一个表”。另一个例子&#xff1a;通常应该使用列表(< ul> or< ol>)来对相似的项目(<…

golang商城_Golang——简单是终极的成熟

Google的Rob Pike在2012年的主题演讲中说&#xff1a;“ Go的目的不是要对编程语言设计进行研究&#xff1b; 这是为了为其设计师及其同事改善工作环境。 与编程语言研究相比&#xff0c;Go不仅仅是软件工程。 换一句话&#xff0c;它与软件工程服务中的语言设计有关。” 演讲揭…