# 迭代器(for、list、tuple、dict、set)
'''1、什麼是迭代器
器=》工具
count = 1
while count <3 :
print(count)
count += 1
迭代器:就是一種不依賴於索引的取值工具
2、為何要有迭代器
特性:優點:
1、是一種通用的迭代取值方案
2、惰性計算,節省記憶體
缺點:1、取值不如索引/key取值方式靈活
2、取值是一次性的,只能往後取,不能預估值的個數
'''dic =
dic_iterator = dic.__iter__(
)# res1 = dic_iterator.__next__()
# print(res1)
# res2 = dic_iterator.__next__()
# print(res2)
# res3 = dic_iterator.__next__()
# print(res3)
# res4 = dic_iterator.__next__() # stopiteration
# 簡化版
dic =
dic_iterator = dic.__iter__(
)while
true
:try
: res = dic_iterator.__next__(
)print
(res)
except stopiteration:
break
# 內建有__iter__方法的型別稱之為:可迭代的物件/型別
# 1、字典 dict
# 2、集合 set
# 3、檔案物件 file (file也有__next__方法)
# 4、字串str
# 5、列表 list
# 6、元組 tuple
# 迭代器物件:內建有__next__方法、內建__iter__方法
dic_iterator1 = dic.__iter__(
)print
(dic_iterator1.__iter__(
).__iter__(
).__iter__(
)is dic_iterator1)
# for迴圈工作原理
while
true
:try
: res = dic_iterator.__next__(
)print
(res)
except stopiteration:
break
for k in dic:
print
(k)'''
步驟1.dic_iterator = dic.__iter__()
步驟2.k = dic_iterator.__next__() 執行迴圈體**
步驟3.迴圈往復,直到丟擲異常
'''for k in dic_iterator1:
print
(k,'111'
)# 自定義迭代器來實現惰性運算,從而達到節省記憶體的效果
# 但凡函式內出現yield關鍵字,呼叫函式將不會執行函式體**,會得到乙個返回值,該返回值
# 就是我們自定義的迭代器,稱之為生成器
deffunc()
:print
('hello1'
)yield
111print
('hello2'
)yield
222print
('hello3'
)yield
333g = func(
)print
(g)#res =
next
(g)print
(res)
next
(g)# 案例
deffunc()
: res=
0while
true
: res+=
1yield res
g=func(
)for i in g:
print
(i)# 2 yield 和return
# (1)相同點:都可以用來返回值
# (2)不同點:return 只能返回一次值
# yield 多次返回值,可以用來暫停
31 迭代器丶生成器
a range 0,10 a range 0,10 it iter a 建立迭代物件 next it 輸出迭代器的下乙個元素 0 next it 1 for var in it 迭代物件可以被for迴圈訪問 print var 234 5678 9 1,迭代器物件可以使用常規for語句進行遍歷 li...
迭代器與生成器
可迭代物件 可以直接作用於for迴圈的物件 統稱為可迭代物件 返回迭代器的物件 即iterable。一是集合資料型別,如list tuple dict set str等 二是generator,包括生成器和帶yield的generator function。容器 簡單來說 容器是一系列元素的集合 容...
生成器與迭代器
迭代是python最強大的功能之一,是訪問集合元素的一種方式。迭代器是乙個可以記住遍歷的位置的物件。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。迭代器有兩個基本的方法 iter 和 next 字串,列表或元組物件都可用於建立迭代器 list 1,2,3,...