python基礎 Part 8 迭代器與生成器

2021-09-25 16:42:31 字數 1872 閱讀 2675

實現了__iter__和__next__方法的物件就是迭代器,可迭代物件 與 迭代器 的區別在於,迭代器擁有__next__方法

迭代器有兩種定義方式 iter(li) 和 li.iter() ,效果是一樣的

li =[1

,2,3

,4,5

]a =

iter

(li)

a1 = li.__iter__(

)print

(next

(a),

next

(a),

next

(a),

next

(a),

next

(a))

print

(next

(a1)

,next

(a1)

,next

(a1)

,next

(a1)

,next

(a1)

)#執行結果:12

3451

2345

迭代器可以通過 next 和 a.next() 方法取出值,在使用while迴圈去在列印時會報stopiteration,因此需要有異常處理語句來配合while列印

li =[1

,2,3

]a =

iter

(li)

while

true

:try

:print

(next

(a))

except stopiteration:

break

#執行結果:12

3

除了已有的迭代器 iter 之外,還可以自己定義乙個迭代器來使用

class

mylist

:def

__init__

(self,li)

: self.li = li

def__iter__

(self)

:return

iter

(self.li)

#轉化為乙個迭代器

li =[1

,2,3

]a = mylist(li)

for i in a:

print

(i)#執行結果: 12

3

生成器 屬於 迭代器的一種,用乙個生成乙個,極大的節約空間,生成器就是為了節省記憶體

小括號的推導式就是乙個生成器

g =

(i for i in

range(3

))print

(next

(g),

next

(g),

next

(g))

#執行結果: 01

2

yield 如果函式中有yield,這個函式就是生成器

def

func()

:print

('這是生成器'

)yield

'開始生成'

#yield 會有暫停功能

yield

'生成1個'

yield

'生成2個'

a = func(

)print

(next

(a),

next

(a),

next

(a))

#執行結果:

這是生成器

開始生成 生成1個 生成2個

重看css權威指南 part8

這節介紹兩個很重要的內容 浮動和定位 浮動的布局規則 浮動在早期主要用於,時替換元素。當我們為乙個非替換元素使用浮動時,最好給他定義乙個width。否則浮動後元素的寬度可能會趨於0。關於浮動的另乙個有意思的情況,浮動元素的外邊距和周圍元素的外邊距不會合併。此外,浮動元素會生成乙個塊級框,相當於dis...

Part 8 曲面積分

直徑趨於零則面積一定趨於零 但面積趨於零,有可能出現長條的情況,不滿足密度近似均勻和形體近似平面 分 割極細,以至於密度和形體在面元內部均 勻 隨後求 和 在這種切分下整體呈現出穩定的極限值 線性性質,分片光滑的可累加性 重要 奇偶性 完全可以認為是第一類曲線積分的形式上的直接拓展。lim limi...

硬體知識整理part8 諧振電路理論基礎

天行健,君子以自強不息。周易 在這裡必須要講解一下rlc串聯諧振和rlc併聯諧振電路以及它們的特點。首先需要解釋一下諧振的概念。諧振是指埠上的電壓和輸入電流相同方向時,此種狀態被稱為諧振。1.串聯諧振 由於在交流電路中,電阻的電壓和電流是同相位的,電感的電壓會超前電流90度,電容的電壓會滯後電流90...