本博文源於python基礎,旨在實現分別用迭代器與生成器實現range功能,range功能用初始值start,步長step,stop是終止,其中終止是必須要的引數,其餘預設引數放上去。
確定好init初始化接受各個引數,step,start和stop。然後iter返回物件本身,next進行迭代,加上步長
每次跟stop值進行比較不斷生成即可
def
myyield
(stop, start=
0, step=1)
:while start + step < stop+step:
yield start
start += step
if __name__ ==
'__main__'
:for i in myyield(start=-2
,stop=
12,step=3)
:print
(i)
class
myrange
(object):
def__init__
(self, stop, start=
0, step=1)
: self.start = start
self.stop = stop
self.step = step
print
(start)
def__iter__
(self)
: self.cur_val = self.start
return self
def__next__
(self)
: self.cur_val += self.step
if self.cur_val < self.stop:
return self.cur_val
else
:raise stopiteration
for i in myrange(start=-2
, stop=
13, step=2)
:print
(i)
Python生成器與迭代器
生成器只有在用的時候會出現在記憶體中,對比列表全部存在記憶體中,減少了記憶體占用 next 函式 依次取生成器的值 s x 2 for x in range 1000 中括號是列表解析,小括號表示生成一系列值,就是生成器 s at 0x7fa20aa8b048 print next s 用next ...
python 迭代器與生成器
迭代器和生成器 print 1 in 1,2,3 print 1 not in 1,2,3 print 4 in print 4 not in 1,2,3 print x not in dlkjfxfei 可迭代物件 iterable 可以被next 函式呼叫並不斷返回下乙個值 知道沒有資料時丟擲s...
Python 迭代器與生成器
一 迭代器 理解迭代器需要搞清楚容器 container 迭代器協議 可迭代物件 iterable 迭代器 iterator 生成器 generator 1 容器 container 容器是一種把多個元素組織在一起的資料結構,容器中的元素可以逐個地迭代獲取,可以用in,not in關鍵字判斷元素是否...