python分別用迭代器與生成器實現range功能

本博文源於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)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章