實現了__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...