1. 程式人生 > >Python生成器、實現斐波那契數列

Python生成器、實現斐波那契數列

Python生成器、實現斐波那契數列

"""
	生成器
	按照一定規則不斷產生新元素的物件
    無法直接輸出生成器裡面的內容
    生成器儲存的是資料的演算法/規則,每一次呼叫產生一個
    生成器建立使用yield關鍵字
        函式可以有返回值,返回值返回給呼叫者
        yield 跟return功能類似,
            return直接返回直觀結果
            yield返回給呼叫者的不是直觀結果,是資料存取的演算法、規則
            
     可以使用next()函式呼叫生成器物件裡面的內容
     也可以使用for 迴圈遍歷生成器物件
"""

簡單的生成器

generator00 = (x for x in range(10))
print(generator00)

生成器函式

def get_generator(list00):
    for i in list00:
        yield i

list00 = [“炳鈿”, “京城”, “詩清”, “俊凱”, “惠玲”, “志鈺”,]

建立生成器物件

name_generator = get_generator(list00)

輸出生成器內容

# 使用next呼叫
print(next(name_generator))
print(next(name_generator))
print(next(name_generator))
print("la")
print("la")
print("la")
print("la")
print("la")
print(next(name_generator))

# 使用for迴圈遍歷
for namein name_generator:
	print(name)

Python生成器實現斐波那契數列

斐波那契數列
a = 0   # 月份
b = 0   # 小兔子個數
c = 1   # 成年兔子

while a < 10:
    b, c = c, b + c
    print(b)
    a += 1

呼叫函式

fib_generator = fib(10)
print("*" * 20)
print(next(fib_generator))
print(next(fib_generator))
print(next(fib_generator))
print(next(fib_generator))
print(next(fib_generator))
print(next(fib_generator))
print(next(fib_generator))
print(next(fib_generator))

輸出結果:

********************
1
1
2
3
5
8
13
21