iT邦幫忙

2023 iThome 鐵人賽

DAY 14
0
自我挑戰組

Python 編程精通之路系列 第 14

第十四天:生成器(Generators)

  • 分享至 

  • xImage
  •  

在Python中,生成器是一種特殊的迭代器,允許您以一個較低的內存消耗生成序列數據。生成器非常適用於處理大型數據集,或者當您需要按需生成數據時。

創建生成器:

生成器可以通過使用生成器表達式或定義帶有yield語句的函數來創建。以下是一個使用生成器表達式的示例:

generator = (x * 2 for x in range(5))

這將創建一個生成器,它可以按需生成0到8之間的整數,每個整數都是原始數字的兩倍。

使用yield的函數:

另一種創建生成器的方式是定義一個帶有yield語句的函數。yield暫停函數的執行,並返回一個值給調用者,當函數再次被調用時,執行將從上次暫停的地方繼續。以下是一個使用yield的函數示例:

def count_up_to(n):
    i = 1
    while i <= n:
        yield i
        i += 1

counter = count_up_to(5)

這個count_up_to函數是一個生成器,它可以生成1到5之間的整數。

迭代生成器:

生成器是可迭代的,您可以使用for迴圈或next()函數來遍歷生成器的元素。以下是一個示例:

for num in counter:
    print(num)

或者使用next()函數來手動獲取下一個元素:

print(next(counter))  # 輸出:1
print(next(counter))  # 輸出:2

生成器表達式和列表推導式的比較:

生成器表達式在內存使用方面更高效,因為它們僅生成一個元素並且不需要事先生成整個序列,而列表推導式則創建一個完整的列表。因此,在處理大型數據集時,生成器表達式可能更經濟。

生成器是一個重要的Python特性,它可以幫助您更有效地處理大型數據集和按需生成數據,同時減少內存消耗。


上一篇
第十三天:列表推導式(List Comprehensions)
下一篇
第十五天:多線程和多進程
系列文
Python 編程精通之路20
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言