91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用Python實現等差數列

發布時間:2022-12-17 09:25:22 來源:億速云 閱讀:131 作者:iii 欄目:開發技術

今天小編給大家分享一下怎么用Python實現等差數列的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

    Python實現等差數列

    def arithemtic_sequence_based_generator(first=0, step=1, sequence_count=10):
        for index in range(0, sequence_count):
            yield first + index * step
            index += 1
    
    if __name__ == "__main__":
        generator = arithemtic_sequence_based_generator(first=0, step=5, sequence_count=10)
        for number in generator:
            print(number, end=" ")

    運行結果:

    0 5 10 15 20 25 30 35 40 45 

    python等差數列生成器

    典型的迭代器模式作用很簡單——遍歷數據結構。

    不過,即便不是從集合中獲取元素,而 是獲取序列中即時生成的下一個值時,也用得到這種基于方法的標準接口。

    例如,內置的 range 函數用于生成有窮整數等差數列(Arithmetic Progression,AP), itertools.count 函 數用于生成無窮等差數列。

    先來看等差數列:

    """
    等差數列實現。
    """
    
    
    class ArithmeticProgression:
    
        def __init__(self, begin, step, end=None):
            self.begin = begin
            self.step = step
            self.end = end   # None -> 無窮數列
    
        def __iter__(self):
            result = type(self.begin + self.step)(self.begin)
            forever = self.end is None
            index = 0
            while forever or result < self.end:
                yield result
                index += 1
                result = self.begin + self.step * index
    
    
    if __name__ == '__main__':
        ap = ArithmeticProgression(0, 1, 3)
        print(ap)
        # print(list(ap))
        a = iter(ap)
        print(next(a))

    這是個簡單的示例,說明了如何使用生成器函數實現特殊的 __iter__ 方法。

    然而,如果一個類只是為了構建生成器而去實現 __iter__ 方法,那還不如使用生成器函數

    畢竟,生成器函數是制造生成器的 工廠。

    def aritprog_gen(begin, step, end=None):
        result = type(begin + step)(begin)
        forever = end is None
        index = 0
        while forever or result < end:
            yield result
            index += 1
            result = begin + step * index

    使用itertools模塊生成等差數列

    怎么用Python實現等差數列

    然而,itertools.count 函數從不停止,因此,如果調用 list(count()),Python 會創建一 個特別大的列表,超出可用內存,在調用失敗之前,電腦會瘋狂地運轉。

    不過,itertools.takewhile 函數則不同,它會生成一個使用另一個生成器的生成器,在指 定的條件計算結果為 False 時停止。因此,可以把這兩個函數結合在一起使用,編寫下述 代碼:

    怎么用Python實現等差數列

    利用 takewhilecount 函數,寫出的代碼流暢而簡短。

    import itertools 
    
    
    # 注意,下面示例中的 aritprog_gen 不是生成器函數,
    # 因為定義體中沒有 yield 關鍵字。
    # 但是它會返回一個生成器,
    # 因此它與其他生成器函數一樣,
    # 也是生成器工廠函數。
    def aritprog_two_gen(begin, step, end=None):
        first = type(begin + step)(begin)
        ap_gen = itertools.count(first, step)
        if end is not None:
            ap_gen = itertools.takewhile(lambda n: n < end, ap_gen)
        return ap_gen

    以上就是“怎么用Python實現等差數列”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    宜都市| 宁城县| 南漳县| 交城县| 田林县| 南康市| 宝丰县| 普宁市| 竹山县| 丰城市| 定襄县| 山丹县| 台山市| 利辛县| 时尚| 海南省| 蒙阴县| 金堂县| 赣州市| 曲水县| 龙井市| 屏东县| 于都县| 栖霞市| 平邑县| 江陵县| 长寿区| 博乐市| 英山县| 上林县| 鹤壁市| 苍梧县| 来宾市| 日照市| 信丰县| 霍州市| 台南县| 井研县| 安阳市| 怀集县| 惠安县|