python 生成器實現斐波那契數列。


def fib(n):
    one=0
    two=1
    while n>0:
        one,two=two,one+two
        n-=1
        yield two

print [i for i in fib(10)]
print next(fib(10))

結果#

[1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
1

*****迭代海量數據時,顯然生成器更合適

什么是生成器

普通函數用 return 返回一個值,和 Java 等其他語言是一樣的,然而在 Python 中還有一種函數,用關鍵字 yield 來返回值,這種函數叫生成器函數,函數被調用時會返回一個生成器對象,生成器本質上還是一個迭代器,也是用在迭代操作中,因此它有和迭代器一樣的特性,唯一的區別在於實現方式上不一樣,后者更加簡潔。

生成器對象的行為和迭代器是非常相似的,可以用在 for 循環等場景中。注意 yield 對應的值在函數被調用時不會立刻返回,而是調用next方法時(本質上 for 循環也是調用 next 方法)才返回

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM