Day6 迭代器與生成器的應用

2022-07-18 14:24:35 字數 1172 閱讀 6644

1.迭代器的應用

檔名:a,檔案內容如下:

#

定義階段:定義兩個生成器函式

defcat(filename):

with open(filename,mode="

r",encoding="

utf8

") as f:

f.seek(0)

while

true:

line =f.readline()

ifline:

yield

line.strip()

else

:

break

defgrep(x,y):

for line in

y:

if x in

line:

#print(line.strip())

yield

line

#呼叫階段:得到兩個生成器物件

g1=cat("

a.txt")

g2=grep("

",g1)

#next的觸發執行g2生成器函式

for i in

g2:

print(i)

2.生成器的應用

把下述函式改成生成器的形式,執行生成器函式的到乙個生成器g,然後每次g.send(url),列印頁面的內容,利用g可以無限send(這個閉包函式是老師為了鞏固以前知識,不使用該模板)

def

get(url):

defindex():

return

urlopen(url).read()

return index

from urllib.request import

urlopen

defindex():

while

true:

url = yield

print("

%s的網頁源**是:

" %url)

print

(urlopen(url).read())

g=index()

next(g)

g.send(

"")g.send(

"")

迭代器與生成器

可迭代物件 可以直接作用於for迴圈的物件 統稱為可迭代物件 返回迭代器的物件 即iterable。一是集合資料型別,如list tuple dict set str等 二是generator,包括生成器和帶yield的generator function。容器 簡單來說 容器是一系列元素的集合 容...

生成器與迭代器

迭代是python最強大的功能之一,是訪問集合元素的一種方式。迭代器是乙個可以記住遍歷的位置的物件。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。迭代器有兩個基本的方法 iter 和 next 字串,列表或元組物件都可用於建立迭代器 list 1,2,3,...

生成器與迭代器

通過列表推導式,可以直接建立乙個列表,但是收到記憶體限制,列表容量肯定是有限的而且,建立乙個包含100萬個元素的列表,占用很大的儲存空間。如果我們僅僅需要訪問前面幾個元素,後面 後面元素的占用儲存空間就被浪費 所以,如果列表元素可以按照某種演算法算出來,那我們就可以再迴圈當中不斷地推導它,生成元素,...