開始使用免費開始

建構一個產生器

在前面的練習中,你主要撰寫的是使用推導式語法的產生器表達式。能用推導式來寫產生器表達式,確實讓工作變得容易許多!

接著回想影片內容:不只有產生器表達式,還有「產生器函式」。「產生器函式」和產生器表達式一樣,會逐一產生一連串的值,而不是只回傳單一值。定義產生器函式時的方式與一般函式相同,但每當要產生一個值時,會使用關鍵字 yield,而不是 return

在這個練習中,你要建立一個產生器函式,其運作方式與你在前一題定義的產生器表達式相似:

lengths = (len(person) for person in lannister)

本練習屬於課程

Python 工具箱

檢視課程

練習說明

  • 完成函式 get_lengths() 的函式標頭,該函式只有一個參數 input_list
  • 在函式定義中的 for 迴圈裡,使用 yield 產生 input_list 中各字串的「長度」。
  • 完成用來列印由 get_lengths() 產生器函式所產生數值之 for 迴圈的可疊代部分。呼叫 get_lengths(),並傳入清單 lannister

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

# Create a list of strings
lannister = ['cersei', 'jaime', 'tywin', 'tyrion', 'joffrey']

# Define generator function get_lengths
def ____:
    """Generator function that yields the
    length of the strings in input_list."""

    # Yield the length of a string
    for person in input_list:
        ____

# Print the values generated by get_lengths()
for value in ____:
    print(value)
編輯並執行程式碼