開始使用免費開始

內建練習:enumerate()

在這個練習中,你會操作 Python 的內建函式 enumerate()。這個函式可用來取得帶有索引的列表。假設你有一份聚會來賓的名單,依照到場順序排列(Jerry 最先到,接著是 Kramer,等等):

names = ['Jerry', 'Kramer', 'Elaine', 'George', 'Newman']

如果你想為每個人附上代表到場順序的索引,可以 用下面的 for 迴圈:

indexed_names = []
for i in range(len(names)):
    index_name = (i, names[i])
    indexed_names.append(index_name)

[(0,'Jerry'),(1,'Kramer'),(2,'Elaine'),(3,'George'),(4,'Newman')]

不過,這不是最有效率的解法。讓我們用 enumerate() 來更有效率地完成這件事。

本練習屬於課程

撰寫高效的 Python 程式碼

檢視課程

練習說明

  • for i in range(len(names)) 改為使用 enumerate(),並以 i 作為索引變數、name 作為疊代變數。
  • 使用 enumerate() 與列表推導式,重寫前面的 for 迴圈,建立新的列表 indexed_names_comp
  • 再建立另一個列表(indexed_names_unpack),做法是對 names 使用 enumerate() 產生的 enumerate 物件 搭配星號(*)來解包。這次請將 enumerate() 的索引從 1 開始,而不是從 0

動手互動練習

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

# Rewrite the for loop to use enumerate
indexed_names = []
for ____,_____ in ____(names):
    index_name = (i,name)
    indexed_names.append(index_name) 
print(indexed_names)

# Rewrite the above for loop using list comprehension
indexed_names_comp = [(____,____) for i,name in ____(names)]
print(indexed_names_comp)

# Unpack an enumerate object with a starting index of one
indexed_names_unpack = [____(names, ____)]
print(indexed_names_unpack)
編輯並執行程式碼