python迭代器举例_如何最简单、通俗地理解Python的迭代器?
1、什么是迭代器
迭代器 指的是迭代取值的工具,迭代是一個(gè)重復(fù)的過(guò)程,
每次重復(fù)都是基于上一次的結(jié)果而繼續(xù)的,
單純的重復(fù)并不是迭代。
比如:A+B生育了C, C+D=>E,生育過(guò)程是迭代,
克隆就不是迭代。
2、為何要有迭代器
迭代器是用來(lái)迭代取值的工具,而涉及到把多個(gè)值循環(huán)取出來(lái)的類型有:
列表、字符串、元組、字典、集合、打開(kāi)的文件對(duì)象
實(shí)現(xiàn)一個(gè)簡(jiǎn)單的迭代取值功能(基于索引)
list001 = ["abc", "bbc", "cba", "bbq"]
i = 0
while i < len(list001):
print(list001[i])
i += 1
上面這種迭代取值的方式只適用于有索引的數(shù)據(jù)類型:列表,字符串,字典
為了解決基于索引迭代取值的局限性,python必須提供一種能夠不依賴索引的取值方式,這就是迭代器
首先,了解一下“可迭代對(duì)象”:可以轉(zhuǎn)換成“迭代器”的對(duì)象
可迭代對(duì)象:但凡內(nèi)置有 _ iter _ 方法的都稱之為可迭代對(duì)象
''.__iter__()
[].__iter__()
().__iter__()
{}.__iter__()
with open("a.txt", mode="w") as f:
f.__iter__()
pass
(字符串,列表,元組,字典,集合, 打開(kāi)的文件,都是可迭代對(duì)象)
調(diào)用 可迭代對(duì)象下的 _ iter_ 方法會(huì)將其轉(zhuǎn)換成迭代器對(duì)象
d = {"a": 1, "b": 2, "c": 3}
res = d.__iter__()
print(res)
運(yùn)行結(jié)果:
轉(zhuǎn)換成迭代器后,有一個(gè) _ next _ 方法
d = {"a": 1, "b": 2, "c": 3}
res = d.__iter__()
print(res)
print(res.__next__())
print(res.__next__())
print(res.__next__())
運(yùn)行結(jié)果:
a
b
c
--------分界線--------
#重復(fù)執(zhí)行迭代器會(huì)怎樣?
#在一個(gè)迭代器取值取干凈的情況下,再對(duì)其取值,取不到
#必須再調(diào)用一次迭代器才能取值
#步驟: 1、調(diào)用迭代器 2、取值
d = {"a": 1, "b": 2, "c": 3}
res = d.__iter__()
while True:
try:
print(res.__next__())
except StopIteration:
break
print("=====>>>>>")
# 重復(fù)執(zhí)行迭代器會(huì)怎樣?
# 在一個(gè)迭代器取值取干凈的情況下,再對(duì)其取值,取不到
# 必須再調(diào)用一次迭代器才能取值
# 步驟: 1、調(diào)用迭代器 2、取值
res = d.__iter__()
while True:
try:
print(res.__next__())
except StopIteration:
break
3、可迭代對(duì)象與迭代器對(duì)象詳解可迭代對(duì)象(“可以轉(zhuǎn)換成迭代器的對(duì)象”):內(nèi)置有_ iter _方法 的對(duì)象
可迭代對(duì)象.__iter__() :得到迭代器對(duì)象
迭代器對(duì)象:內(nèi)置有 _ next _ 方法,并且內(nèi)置有 _ iter _方法 的對(duì)象
迭代器對(duì)象.__next__() :得到迭代器的下一個(gè)值 迭代器對(duì)象.__iter__() :得到迭代器的本身,就是,調(diào)了跟沒(méi)調(diào)用一樣 這是為了讓 for 幕后統(tǒng)一格式
for 循環(huán)的工作原理(for循環(huán)就是“迭代器循環(huán)”)從 d._ iter _() 那里得到一個(gè)迭代器對(duì)象
從 迭代器對(duì)象._ next _() 那里拿到一個(gè)返回值,然后將該返回值賦值給 k
循環(huán)往復(fù)步驟2,直到拋出 StopIteration 異常,for循環(huán)會(huì)捕捉異常,然后結(jié)果循環(huán)
print("----for----")
for k in d:
print(k)
代碼運(yùn)行結(jié)果:
a
b
c
=====>>>>>
a
b
c
----for----
a
b
c
碼字不易,如果此文章對(duì)你有幫助的話,點(diǎn)個(gè)贊收個(gè)藏,給作者一個(gè)鼓勵(lì)。也方便你下次能夠快速查找。
總結(jié)
以上是生活随笔為你收集整理的python迭代器举例_如何最简单、通俗地理解Python的迭代器?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: JAVA入门级教学之(面向过程和面向对象
- 下一篇: python迷宫起点终点所有路径_通向终