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
碼字不易,如果此文章對你有幫助的話,點個贊收個藏,給作者一個鼓勵。也方便你下次能夠快速查找。
總結
以上是生活随笔為你收集整理的python迭代器举例_如何最简单、通俗地理解Python的迭代器?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA入门级教学之(面向过程和面向对象
- 下一篇: websocket python爬虫_p