Python 產生器(Generator)是一種特殊的迭代器,能夠以更有效率的方式處理大量數據。本文將介紹產生器的基礎概念、使用方法,並提供實際應用範例
產生器(Generator)是一種特殊類型的迭代器,指的是在函式裡使用到 yield
的函示,當函式執行到 yield
時,它會返回一個值並暫停執行,直到下一次呼叫。
def my_generator():
yield 1
yield 2
yield 3
gen = my_generator()
for value in gen:
print(value)
# 輸出結果會是:
1
2
3
yield
,代碼更為簡潔,易於理解。def infinite_sequence():
num = 0
while True:
yield num
num += 1
for i in infinite_sequence():
if i > 20:
break
print(i)
這個範例示範了如何使用產生器生成一個無限數列。它會不斷產生新的數字,直到達到某個條件(在此為 i > 20
)時停止。
def read_large_file(file_name):
with open(file_name, 'r') as file:
for line in file:
yield line
for line in read_large_file("large_file.txt"):
print(line)
這個範例中,read_large_file
函數逐行讀取文件,而不是一次性將整個文件加載到記憶體中,可以有效減少記憶體的使用。
# squares = [x*x for x in range(10)]
# print(squares) 輸出: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
squares = (x*x for x in range(10))
# print(squares) 輸出: <generator object <genexpr> at 0x000001BE87E49A10>
for square in squares:
print(square)
Python 還提供了產生器表示式,類似於列表推導,差別在於將中括號[]
改成小括號()
,還有產生器表示式並不能直接列印出內容。
😊 感謝你的耐心閱讀,若是你喜歡這篇內容,可以透過以下方式表達你的喜歡 😊
❤️按個愛心|💬留言互動|🔗分享此文|📌追蹤阿梧|☕請喝咖啡