31 迭代器與生成器

2021-10-08 09:48:00 字數 2241 閱讀 7129

# 迭代器(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,...